Linux 循环时运行shell脚本时出错

Linux 循环时运行shell脚本时出错,linux,shell,unix,Linux,Shell,Unix,我写了这个shell脚本文件。但我在意外标记附近得到了错误完成'` #!/bin/bash i=1 while [ $i -lt 12 ]; do echo Hi i=$[$i+1] done 以前,没有在之前执行。我读了stackexchange答案并写了在之后,当[]时,仍然会出现错误。我在网上找不到解决方案。有什么想法吗 i=$[$i+1]这是错误的。您可能是指i=$((i+1))bash的路径不正确,您缺少路径中的根 将第一行更改为 #!/bin/bash 正确放置确

我写了这个shell脚本文件。但我在意外标记附近得到了
错误
完成'`

#!/bin/bash
i=1
while [ $i -lt 12 ]; do
    echo Hi
    i=$[$i+1]
done

以前,没有
之前执行
。我读了stackexchange答案并写了
之后,当[]
时,仍然会出现错误。我在网上找不到解决方案。有什么想法吗

i=$[$i+1]
这是错误的。您可能是指
i=$((i+1))

bash的路径不正确,您缺少路径中的根 将第一行更改为

#!/bin/bash

正确放置
确实很棘手。下面是脚本的一行代码版本,在正确的位置使用分号:

i=1;而((i<12));做回声“嗨”;((i++);完成

请注意,如果将变量中的
$
放在双括号
之间,则整数比较将变得多余

$ ./ttt
Hi
Hi
Hi
Hi 
Hi
Hi
Hi
Hi
Hi
Hi 
Hi
$ cat ttt
#!/bin/bash
i=1
while [ $i -lt 12 ]; do
    echo Hi
    i=$[$i+1]
done  
$

修正了。但我仍然有问题,这与其说是错误的,不如说是过时的和没有文件的
$[…]
是POSIX
$(…)
采用之前算术表达式的
bash
符号。啊,很好,我不知道你确定你的脚本是由
bash
运行的吗?如果您使用
sh myscript
执行脚本,并且
sh
不是指向
bash
的链接,那么您的脚本将由其他shell(可能是
dash
)运行,该shell不支持
bash
古老的
$[…]语法。