Bash 如何使用chmod通过变量更改文件的权限

Bash 如何使用chmod通过变量更改文件的权限,bash,chmod,Bash,Chmod,我正在尝试更改文件的权限,并且文件的路径存储在数组中 chmod 744 ${arrayOfFiles[1]} 1只是一个占位符,实际上它是for循环中的i。但每当我运行此命令时,都会出现以下错误: chmod: missing operand after ‘744’ 我不知道为什么。我已经检查了${arrayOfFiles[1]}是否确实包含完整路径,它确实包含完整路径 我不知道为什么它不起作用 提前谢谢 编辑: local i=0 filePermission="-rwxr--r--"

我正在尝试更改文件的权限,并且文件的路径存储在数组中

chmod 744 ${arrayOfFiles[1]}
1只是一个占位符,实际上它是for循环中的
i
。但每当我运行此命令时,都会出现以下错误:

chmod: missing operand after ‘744’
我不知道为什么。我已经检查了
${arrayOfFiles[1]}
是否确实包含完整路径,它确实包含完整路径

我不知道为什么它不起作用

提前谢谢

编辑:

local i=0
filePermission="-rwxr--r--"
directoryPermission="-rwxr-xr-x"
for (( i=0; i<=${#arrayOfFilePermissions[@]}; i++))
do
    if [ "${arrayOfFilePermissions[$i]}" != "$filePermission" ]; then
        echo "File ${arrayOfFiles[$i]} has the wrong permission: ${arrayOfFilePermissions[$i]}"
        echo ${arrayOfFiles[$i]}
        chmod 744 ${arrayOfFiles[$i]}
        echo "This has been changed to: $filePermission"
    fi
done
locali=0
filePermission=“-rwxr--r--”
directoryPermission=“-rwxr-xr-x”

for((i=0;iYour
chmod
在我看来不错。你能(1)展示你的数组是如何定义的,并且(2)在脚本中
chmod
之前执行
回显
索引
1
处的值吗?看起来它可能是某个打字错误,因为只有
${arrayOfFiles[1]}的值出现了这个错误
是空的。@123基本上是的,我找不到一种简单的方法来添加到数组中,这就是我在查找方法时想到的。@Rikg09
array+=('new element')
就是这样做的。@123是这样的……我刚刚更改了代码。谢谢你,现在看起来更干净了。你的
chmod
对我来说很好。你能(1)吗显示数组是如何定义的,(2)在脚本中的
chmod
之前,对索引
1
处的值执行
echo
?看起来可能是某个地方的输入错误,因为只有
${arrayOfFiles[1]}的值
为空。@123基本上是的,我找不到一种简单的方法来添加到数组中,这就是我在查找方法时想到的。@Rikg09
数组+=('new element')
就是这样做的。@123就是这样做的……我刚刚更改了代码。谢谢你,它现在看起来干净多了