bash - Unix bash 错误 - 需要二进制运算符

标签 bash shell unix command

下面是我的 bash 脚本中的代码。当我给命令 2 个参数时,我收到一个错误,提示二进制运算符(当我给 1 个参数时不给出错误)。当我给出 2 个参数时,它确实会更改文件权限,因为当我执行 ls -l 时我可以看到它,但它仍然给我这个错误。我该如何解决?

for file in $@
do
    chmod 755 $file
done

if [ -z $@ ]
then
        echo "Error. No argument."
        exit $ERROR_CODE_1
fi

我已经添加了这个

if [ ! -f "$*" ]
then
       echo "Error. File does not exist"
       exit $ERROR_NO_FILE
fi

但是现在当我输入超过 1 个参数时,它只会执行 if 语句中的所有操作(即打印 error.file 不存在),即使文件确实存在。

最佳答案

换一种方式:只问传递了多少参数:

...
if [ $# -eq 0 ]
...

您的代码中出现错误,因为 $@ 变量扩展为多个单词,这使得 test 命令看起来像这样:

[ -z parm1 parm2 parm3 ... ]

关于bash - Unix bash 错误 - 需要二进制运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939134/

相关文章:

svn - 自动化 svn 更新

java - Jenkins多次执行bash JDK安装脚本

linux - 列出文件及其基目录

objective-c - 从 Objective-C 运行 shell 脚本

linux - 找到一个模式并修改下一行,而不修改文件中的其他内容。最好是基于 Linux 的命令(sed、awk 等)

linux - 如何对多个文件进行排序? Unix

linux - 使用 SSH 时转义引号

bash - 在 bash 中处理命名参数

c - 为什么 sizeof 在 C 中对同一个字符串返回不同的值?

c - 使用 open() 只读和只写