执行bash脚本时出错
我有一个名为执行bash脚本时出错,bash,Bash,我有一个名为1.txt的文件,其中包含数字,如2、30、20、1等。我试图将此文本文件中的每个数字与数值20进行比较,如果该值等于20,我希望运行一个命令,否则退出 我的代码如下。当我尝试运行bash脚本时,错误如下 ---------- email.sh: line 2: [[2: command not found email.sh: line 2: [[1: command not found 您的if语法错误。尝试包括空间: #!/bin/bash for f in $( cat 1
1.txt
的文件,其中包含数字,如2、30、20、1等。
我试图将此文本文件中的每个数字与数值20
进行比较,如果该值等于20
,我希望运行一个命令,否则退出
我的代码如下。当我尝试运行bash脚本时,错误如下
----------
email.sh: line 2: [[2: command not found
email.sh: line 2: [[1: command not found
您的if语法错误。尝试包括空间:
#!/bin/bash
for f in $( cat 1.txt ); do
if [ $f -eq "20" ];
then
echo "sucess"
fi
done
您的if语法错误。尝试包括空间:
#!/bin/bash
for f in $( cat 1.txt ); do
if [ $f -eq "20" ];
then
echo "sucess"
fi
done
在if中的
[[
后面应该有空格
if [[ "$f" -eq "20" ]];
示例
$ if [[ "$f" -eq "20" ]]; then echo "sucess"; fi
sucess
为什么?
在bash中调用
[[]]
构造,并且您始终需要用空格分隔任何语言中的标记。在if中的[[[
之后应该有空格
if [[ "$f" -eq "20" ]];
示例
$ if [[ "$f" -eq "20" ]]; then echo "sucess"; fi
sucess
为什么?
在bash中,调用
[[]]
构造,并且您总是需要用空格分隔任何语言中的标记。尝试在变量和方括号之间使用空格,例如[[$f-eq“20”];
尝试在变量和方括号之间使用空格,例如[$f-eq“20”];
]
不是命令,两者都是关键字。您可以将其统称为测试命令:[[]]是扩展的测试命令
@Jahid对不起,但我想我在bash中写了同样的[[]]是扩展的测试命令,部分是
而commands
是错误的。你把它们分别归为命令,这在语法上是错误的,即它们都不是命令,它们一起意味着一个命令。@Jahid明白了,我已经重新格式化了句子。希望现在可以了。]
不是命令,它们都是关键词。您可以将其统称为测试命令:[[]]是扩展测试命令
@Jahid抱歉,但我想我在bash中也写了同样的命令[[]]是扩展测试命令,部分是
和命令s
是错误的。你把它们分别归为命令,这在语法上是错误的,即它们都不是命令,它们一起意味着一个命令。@Jahid明白了,我重新格式化了句子。希望现在一切正常。引用您的变量,在大多数情况下在[]
中使用未引用的变量是危险的。还有一个问题,您不应该使用字符串与-eq
进行比较,这是用于整数的。如果[“$f”=“20”],则使用代码>instead@Jahid回答的另一个人也做了同样的事情,她也纠正了他?[]
与[[]]]
不同,[[[]]
是一个扩展版本,可以解决你的所有问题。引用你的变量,在[]中使用未引用的变量是危险的
在大多数情况下。还有一个问题,您不应该将字符串比较用于-eq
,它用于整数。如果[“$f”=“20”],则使用代码>instead@Jahid回答的另一个人也做了同样的事情,她也纠正了他?[[]]
与[[[]]]
不同,[[[]]
是一个扩展版本,可以解决您的所有怪癖。