我在脚本Setup.sh中有以下逻辑。
#!/bin/bash
for ((i = 0 ; i < 5 ; i++))
do
echo "Welcome $i times."
done
当我使用命令./Setup.sh
运行脚本时,我收到错误
./Setup.sh: line 3: syntax error near unexpected token `(('
./Setup.sh: line 3: `for ((i = 0 ; i < 5 ; i++))'
当我使用命令sh Setup.sh运行脚本时,出现错误
Setup.sh: syntax error at line 3: `(' unexpected
当我使用http://www.compileonline.com/execute_bash_online.php在Execute BASH Shell Script Online中运行脚本逻辑时,它会完美执行并打印以下内容。
Welcome 0 times.
Welcome 1 times.
Welcome 2 times.
Welcome 3 times.
Welcome 4 times.
有人可以帮我理解为什么我在Sun Solaris Unix机器上出现此错误吗?
答案 0 :(得分:3)
运行sh Setup.sh
时,Solaris /bin/sh
用于执行脚本。 Solaris /bin/sh
不是POSIX shell,也不理解非可移植(())
语法。
如果您使用#!/bin/bash
应工作。如果没有,也许你的bash非常古老。 bash --version
输出了什么?
在线演示使用bash 4.1.2(1)-release
。
答案 1 :(得分:1)
请检查Solaris系统上的bash
版本。
bash --version
据我记忆,最近引入了(( ))
算术符号。它是一种基础,因此它不适用于sh
。
该网站可能使用新版本的bash。