0

我的 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

4 回答 4

2

尝试使用bash而不是sh因为$(( ... ))不是标准的。

于 2012-11-30T08:54:38.750 回答
1

尝试:

#!/bin/sh

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

$ sh -x test.sh

+ counter=0
++ expr + 1
+ counter=1
+ echo 1
1
于 2012-11-30T08:55:13.520 回答
1

看起来你有一个旧版本的sh. 尝试使用以下脚本:

#!/bin/bash

counter=0
counter=`expr $counter + 1`
echo $counter
于 2012-11-30T09:06:06.253 回答
0

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

使用sh -x test.sh正在击败你的脚本的 shebang #!/bin/bash。您强制 sh 用作解释器来解析您的脚本,而不是 /bin/bash。最高包括 Solaris 10,/bin/sh 是原始的 bourne shell,具有 pre POSIX 语法。它不应该在旧脚本中使用。

然后,您可以简单地声明一个理解您的语法的 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
于 2012-12-01T10:49:34.887 回答