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

时间:2021-06-10 15:17:21

标签: bash shell

我正在编写一个脚本,如果将参数传递给脚本,该脚本需要创建一个文件。 如果没有传递参数,那么它会询问文件名,但它需要具有 -rwx- --- - --- 的默认权限。 我使用此命令 chmod a=-rwx 删除所有默认权限,然后我使用 chmod u=+rwx 获取所需的权限,但它不起作用。 请问有人可以帮忙吗?

#!bin\bash

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 "#!bin\bash" >$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 "#!bin\bash" >$fileName
    sleep 3
    nano $1

fi

1 个答案:

答案 0 :(得分:0)

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

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

所以应该是:

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

另一个问题:

if [ $#==0 ]

应该

if [ $# -eq 0 ]

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

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

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

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

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

相关问题