chmod命令在shell脚本中不起作用



我正在编写一个脚本,如果将参数传递给该脚本,则需要创建一个文件。如果没有传递任何参数,则它将请求fileName,但它需要具有默认权限-rwx- --- - ---。我使用这个命令chmod a=-rwx来删除所有默认权限,然后使用chmod u=+rwx来获得所需的权限,但它不起作用。有人能帮忙吗?

#!binbash
if [ $#==0 ]; then
echo "Please enter a file name?"
read fileName
if [ -f $fileName ]; then
echo "File already exist! Opening for Editing"
sleep 3
nano $fileName
else
echo "File created with the name $fileName"
echo "Opening $fileName for editing "
sleep 3
echo "#!binbash" >$fileName
nano $fileName
fi
elif [ -f $1 ]; then
echo "File already exists with the name $1"
echo "Opening for editing"
sleep 3
nano $1
else
fileName="$1"
chmod a=-rwx $fileName
chmod u=+rwx $fileName
echo "File created with the name $filename"
echo "Opening $fileName for editing "
echo "#!binbash" >$fileName
sleep 3
nano $1
fi

您的chmod语法不正确。操作是=将模式设置为特定值,+添加模式,或者-删除模式;不能将它们与CCD_ 8和CCD_。

您可以对单个文件执行多个操作,方法是使用,将它们分隔开。

所以应该是:

chmod go-rwx,u+rwx "$fileName"

另一个问题:

if [ $#==0 ]

应该是

if [ $# -eq 0 ]

使用-eq进行数值比较,并且在shell条件下运算符周围需要空格。

第三个问题:在创建文件之前执行chmod。放在之后

echo "#!/bin/bash" >"$fileName"

第四个问题:#!binbash应该是#!/bin/bash

最后,记住引用变量,以防它们包含空格。

最新更新