Bash 为什么赢了';我的shell脚本不能工作吗?
我正在使用bash,这是我的代码Bash 为什么赢了';我的shell脚本不能工作吗?,bash,shell,Bash,Shell,我正在使用bash,这是我的代码 for i in $(seq 20) do if [ $i % 3 == 0 ] then echo HI else echo $i fi done 因此,输出应为: 1. 2. 你好 4. 5. 你好 ... 等等 但是当我运行shell时,我一直会遇到这个错误。 script.sh 4:[:1:意外运算符 1. 然后就这样一直持续到20岁。 我尝试了不同的方法,但
for i in $(seq 20)
do
if [ $i % 3 == 0 ]
then
echo HI
else
echo $i
fi
done
因此,输出应为:
1.
2.
你好
4.
5.
你好
...
等等
但是当我运行shell时,我一直会遇到这个错误。
script.sh 4:[:1:意外运算符
1.
然后就这样一直持续到20岁。
我尝试了不同的方法,但无法使其工作。您需要将包含
if
的行更改为:
if [[ $((i%3)) == 0 ]]
这样就行了。您需要将包含
if
的行更改为:
if [[ $((i%3)) == 0 ]]
那就行了。用这个
for i in {1..20}
do
if [ `expr $i % 3` == 0 ]
then
echo HI
else
echo $i
fi
done
用这个
for i in {1..20}
do
if [ `expr $i % 3` == 0 ]
then
echo HI
else
echo $i
fi
done
它应该像下面提到的格式一样 如果[$i%3==0]; 然后
但如果引入“==”符号,它只会产生从1到20的增量值。它应该像下面提到的格式一样 如果[$i%3==0]; 然后 但如果引入“==”符号,它只会产生从1到20的增量值。甚至更简单一点:
if ((i%3 == 0)) # No '$' needed
then
....
更简单一点:
if ((i%3 == 0)) # No '$' needed
then
....
通过“script.sh:4:script.sh:[[:找不到1”,然后一直到“script.sh:4:fizzbuzz.sh:[[:找不到20”,我仍然将此作为输出@马特·多伊:你说你在使用Bash,但是你是如何运行
script.sh
?它是作为sh script.sh
?或者你在shebang行中有什么-它是!/bin/sh
还是!/bin/Bash
?我怀疑你使用的是sh
,而不是Bash
-这就是为什么这行不通的原因。我该如何使用bash.我一直在使用sh script.sh,并且在脚本的顶部使用了#!/bin/bash。顺便说一句,这是我的第一个脚本。天哪,我觉得太愚蠢了。当我不得不以bash script.sh运行它时,我是以sh script.sh运行它的。然后我得到了正确的输出。谢谢您对它进行了如此多的测试,它可以按照您的预期工作,请您再次检查它,注意sp的位置ace characterI仍然通过“script.sh:4:script.sh:[[:找不到1”,然后一直到“script.sh:4:fizzbuzz.sh:[[:找不到20”,将此作为输出@马特·多伊:你说你在使用Bash,但是你是如何运行script.sh
?它是作为sh script.sh
?或者你在shebang行中有什么-它是!/bin/sh
还是!/bin/Bash
?我怀疑你使用的是sh
,而不是Bash
-这就是为什么这行不通的原因。我该如何使用bash.我一直在使用sh script.sh,并且在脚本的顶部使用了#!/bin/bash。顺便说一句,这是我的第一个脚本。天哪,我觉得太愚蠢了。当我不得不以bash script.sh运行它时,我是以sh script.sh运行它的。然后我得到了正确的输出。谢谢您对它进行了如此多的测试,它可以按照您的预期工作,请您再次检查它,注意sp的位置ace字符如果我使用if[[$((i%3))==0]]它只使用[[:它说我在使用bash,在脚本的开头我确实有!!/bin/bash你确定你在使用bash吗?如果是,哪个版本?(sh--version
和bash--version
)。我怀疑你使用的不是Bash-也许/bin/sh
实际上是破折号
?当你运行脚本时,你是运行sh script.sh
还是Bash script.sh
或/script.sh
还是其他什么?文件顶部是否有空行或类似的奇怪内容?是的h我不是作为bash运行的。我知道了如果我使用if[[$((i%3))==0]],它只使用一个[[:它说我在使用bash,在脚本开始时我有!!/bin/bash你确定你在使用bash吗?如果是,是哪个版本?(sh--version
和bash--version
)。我怀疑你使用的不是Bash-也许/bin/sh
实际上是破折号
?当你运行脚本时,你是运行sh script.sh
还是Bash script.sh
或/script.sh
还是其他什么?文件顶部是否有空行或类似的奇怪内容?是的h我不是作为bash运行的。我想起来了,谢谢你也可以使用-eq
而不是==
,这其中唯一可能引起麻烦的是=
而不是=
,但是如果你运行bash,它应该可以正常工作。使用expr
是一个很重要的解决方案,但不是无效的。我更愿意看到<代码>$(expr$i%3)。当然,您必须小心使用所有空格。您也可以使用-eq
而不是=
。这其中唯一可能导致问题的是=
而不是=
,但是如果您正在运行Bash,它应该可以正常工作。使用expr
是一个重要的解决方案,但并非无效。我也希望看到$(expr$I%3)
。当然,您必须小心使用所有空格。