linux - Bash ARGS 帮助 - 获取随机错误

标签 linux bash args

尝试设置规则,如果某个变量到位,有人可以识别我在这里丢失的 wtf 吗?

测试.sh:

#!/bin/bash
args=($@)
if [ "$@" = "--cron" ]; then 
 echo "WORKS!";
    else echo "FAILS"
fi

./test.sh 的输出:

./test.sh: line 3: [: =: unary operator expected
FAILS

但是,当我运行 ./test.sh --cron 时,它起作用了,并且输出了 WORKS

最佳答案

执行此操作的正确方法会有所不同,具体取决于您要执行的操作。如果你想检查第一个参数是否是--cron,使用这个:

if [ "$1" = "--cron" ]; then

如果你想检查 only 参数是否是 --cron,使用这个:

if [ "$*" = "--cron" ]; then

(请注意,这是极少数情况之一,其中 "$*" 是做某事的正确方法——它扩展到所有由空格分隔的参数,但被视为单个单词解析目的。)

如果你想检查任何参数是否是--cron,使用这个:

cronopt=false
for argument; do
    if [ "$argument" = "--cron" ]; then
        cronopt=true
        break    # note: if you are scanning the arguments for other things too, remove this
    fi
done
if $cronopt; then
    ...

顺便说一句,我不确定你使用 args=($@) 行的目的是什么,但是如果你想将参数存储在数组中,正确的方法是args=("$@") -- 引号阻止它在将 args 放入数组之前进行分词、文件名扩展等。

关于linux - Bash ARGS 帮助 - 获取随机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443752/

相关文章:

PHP 相当于 Python 的 func(*[args])

MySQL ODBC - 如何通过 SSH 将 Access 2016 连接到远程服务器

Linux 比较 diff/meld

regex - 按扩展名在 git 存储库中搜索文件

bash - 尝试增加关联数组元素时出现错误的数组下标错误

arrays - 在 Bash 中将命令行参数转换为数组

java - args 变量中整数的最大和最大差

python - 建立大量并行 SSH 连接的 Web 服务器上的脚本,哪种方法更好?

python - 如何让程序不抛出 "Error: Can' t load Floyd's algorithm library”

python - 是否有针对所需属性 (OOP) 的 "pythonic"方法?