2011-03-27 147 views
0

我是shell編程中的新手......基本上我是新手,但我需要一個簡單的腳本來完成循環和執行php腳本。我嘗試了以下內容:近意外的標記'做」bash/shell腳本語句

+2

您需要正確位置的空格。 shell語法通常依賴於空格,並且在方括號前後需要一個空格。第一行應該開始'#!'。因爲你沒有空間(shell [',可能不存在'],'do'是一個意外的關鍵字 - 沒有前面的循環需要它,所以你會得到語法錯誤。 – 2011-03-27 01:23:31

回答

1

或者,您可以使用for循環

for((i=1;i<=13;i++)) 
do 
    php /var/www/html/pos.php & 
done 

由於for循環已經創建了計數器,所以您不必手動聲明計數器。

1

不能看到語法錯誤:

!/bin/bash 
i=0 
while[ i < 13 ] 
    do 
php /var/www/html/pos.php & 
((i++)) 
done 

但由於某些原因,語法不好......我得到的錯誤行4你的代碼,但它應該是這樣的

while [ $i -ne 3 ] 
do 
    echo "on number $i of 3" 
    i=`expr $i + 1` 
done 
+0

不需要使用'expr',因爲bash shell支持增加內部數學運算 – kurumi 2011-03-27 03:46:15

+2

由於expr提供了更多的可移植性,所以不需要使用bashisms。 – 2011-03-27 12:54:04

+1

@william,OP在bash上放置了一個標籤,所以它是bashism ..OP也沒有說他需要編寫可移植代碼。 – kurumi 2011-03-27 15:01:40

2

你需要有和左支架[while之間的空間,你需要把do在單獨的行或用分號(這兩個都是w時相當常見的錯誤選址循環)。此外,左括號[相當於man test支持-lt但不<

function doStuff() { 
    local counter=0 
    while [ $counter -lt 10 ] 
    do 
    echo $counter 
    let counter=$counter+1 
    done 
} 
doStuff 

OR

function doStuff() { 
    local counter=0 
    while [ $counter -lt 10 ] ; do 
    echo $counter 
    let counter=$counter+1 
    done 
} 
doStuff 
1

我想你想要做的事,如:

i=0; while (($i<10)); do i=$((i+1)); echo $i; done 
2
!/bin/bash 
i=0 
while ((i < 13)) 
do 
    php /var/www/html/pos.php & 
    ((i++)) 
done