counter = $ shell脚本中的意外

时间:2012-11-30 08:53:25

标签: bash shell solaris sh

我的shell脚本中有以下行。

#!/bin/bash

counter=0
counter=$((counter+1))
echo $counter

我需要像这样运行上面的shell脚本 -

sh -x test.sh

每当我尝试运行上面的脚本时,我就会得到错误 -

`counter=$' unexpected

我需要在那里做些什么改变?

更新了脚本:

#!/bin/bash

counter=0
counter=$(($counter+1))
echo $counter

4 个答案:

答案 0 :(得分:2)

尝试使用bash代替sh,因为$(( ... ))不是标准。

答案 1 :(得分:1)

尝试:

#!/bin/sh

counter=0
counter=`expr $counter + 1`
echo $counter

$ sh -x test.sh

+ counter=0
++ expr + 1
+ counter=1
+ echo 1
1

答案 2 :(得分:1)

您似乎拥有sh的旧版本。尝试使用以下脚本:

#!/bin/bash

counter=0
counter=`expr $counter + 1`
echo $counter

答案 3 :(得分:0)

我不建议恢复过时的语法。

使用sh -x test.sh会破坏脚本的shebang #!/bin/bash。你强制sh用作解释器来解析你的脚本而不是/ bin / bash。在包含Solaris 10之前,/ bin / sh是具有pre POSIX语法的原始bourne shell。它不应该用在遗留脚本中。

然后,您可以简单地声明一个理解您的语法的shell,即:

之一
/usr/xpg4/bin/sh -x test.sh

/bin/bash -x test.sh

/bin/ksh -x test.sh

如果您真的希望sh -x test.sh按原样工作,只需通过设置您的路径切换到POSIX模式:

PATH=/usr/xpg6/bin:/usr/xpg4/bin:$PATH