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