意外令牌附近的语法错误`(('在Sun Solaris Unix中

时间:2014-02-27 08:40:37

标签: bash shell unix solaris

我在脚本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机器上出现此错误吗?

2 个答案:

答案 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。