執行for循環時出現問題。我執行我的腳本時出現此錯誤在linux shell腳本中for循環的語法
test1.sh: 2: Syntax error: Bad for loop variable
我不明白這個錯誤。
這是我的腳本
#!/bin/bash
for ((c=1; c<=5; c++))
do
echo "Welcome $c times..."
done
任何一個可以告訴我語法在SH環路(在Ubuntu它鏈接到衝殼)殼在Ubuntu?
執行for循環時出現問題。我執行我的腳本時出現此錯誤在linux shell腳本中for循環的語法
test1.sh: 2: Syntax error: Bad for loop variable
我不明白這個錯誤。
這是我的腳本
#!/bin/bash
for ((c=1; c<=5; c++))
do
echo "Welcome $c times..."
done
任何一個可以告訴我語法在SH環路(在Ubuntu它鏈接到衝殼)殼在Ubuntu?
你的shell腳本(如圖所示)在Korn shell和Bash中運行。一些想法:
syntax error: '(' unexpected
)。for ((x;y;z))
構造。試試這個:執行時爲它們
#! /bin/bash
set -vx
echo "Random = $RANDOM" #Test for bash/Kornshell. Will be blank in other shells
echo \$BASH_VERSINFO[0] = ${BASH_VERSINFO[0]} #Should only work in BASH
echo \$BASH_VERSINFO[1] = ${BASH_VERSINFO[1]}
echo \$BASH_VERSINFO[2] = ${BASH_VERSINFO[2]}
echo \$BASH_VERSINFO[3] = ${BASH_VERSINFO[3]}
echo \$BASH_VERSINFO[4] = ${BASH_VERSINFO[4]}
echo \$BASH_VERSINFO[5] = ${BASH_VERSINFO[5]}
for ((c=0, c<=5, c++))
do
echo "Welcome $c times"
done
set -xv
將顯示所有行。$RANDOM
應該顯示一個值,如果這是BASH或Kornshell(您的for循環可以在任何一箇中工作)。{$BASH_VERINFO[x]}
只應該設置,如果這是真正的BASH。即使您在BASH後運行Korn shell,也不會設置這些值(不像$ SHELL,它仍然包含bash
)。如果for循環仍然給你帶來麻煩,就把它刪除吧。在這個腳本的某個地方,我們會發現你是否真的在執行一個bash shell。
標準Posix殼只接受語法for varname in list
類C的for循環語法for ((expr1; expr2; expr3))
是bashism的。
可以使用for c in $(seq 1 5)
是什麼
ls -l /bin/sh
給你的機器上得到標準的POSIX外殼類似的行爲?
讓sh
的符號鏈接bash
,然後你可以做sh ./test1.sh
我沒有得到同樣的錯誤,你的 - 我得到意外的文件結束。無論如何,你有一個缺少分號。 – 2011-04-11 20:33:16
這對我很有用。您可能在文本中隱藏了一個奇怪的字符。 – karlphillip 2011-04-11 20:35:14
對於bash來說語法看起來很好。你可以嘗試確保你運行的是正確的shell嗎? 'ls -l/bin/bash',也許? – 2011-04-11 20:37:36