2012-11-30 25 views
0

我在shell腳本中有以下行。

#!/bin/bash 

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

,我需要運行像這個 -

sh -x test.sh 

上述shell腳本每當我試圖運行上面的腳本,我awlays得到錯誤的 -

`counter=$' unexpected 

任何建議我需要在那裏改變什麼?

更新後的腳本:

#!/bin/bash 

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

回答

1

嘗試:

#!/bin/sh 

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

$ sh -x test.sh

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

謝謝sudo的建議。你能告訴我你是如何運行上述腳本的?你像'sh -x test.sh'那樣執行腳本?正如我已經嘗試過,它給了我同樣的錯誤。 :( – AKIWEB

+0

是'bash的-x test.sh'或'SH -x test.sh'應該工作,什麼平臺是你嗎?'後的bash --version' .. –

+0

隨着'bash'它的工作,但不與'sh',怎樣才能讓我用'sh'這項工作。任何想法? – AKIWEB

2

使用bash代替sh因爲$((...))不達標嘗試。

1

看起來你有sh舊版本。嘗試使用以下腳本:

#!/bin/bash 

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

我不會建議恢復到過時的語法。

使用sh -x test.sh是打敗你的腳本的家當#!/bin/bash。您強制sh用作解釋器來解析腳本而不是/ bin/bash。包括Solaris 10在內,/ bin/sh是帶有POSIX語法的原始bourne 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