Re: [問題] bash 迴圈語法錯誤

看板Linux作者 (小風)時間16年前 (2009/12/29 11:51), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《deepking (wnuiayldh)》之銘言: : #!/bin/bash : for (( i=1; i<=10; i++ )) =>> 這行 Bad for loop variable : do : echo $i : done : 看鳥哥上的語法就這個樣子 : 請問是錯在哪裡阿 A. 解決方式一: 使用 bash 啟動 script bash test.sh B. 解決方式二: 改寫 script, 使其可同時與 bash 與 dash 共通 ---------- 以下的迥圈可同時相容 bash 及 dash ---------- #!/bin/sh i=1 while [ $i -le 10 ];do echo $i i=$(($i + 1)) done ------------------------------------------------------- 註一: for ((i=1;i<=10;i++)) 只適用於 bash. 註二: 下例對於 i = i + 1 的用法, 只適用於 bash, 不適用 dash 1) ((i++)) 2) i=$((i + 1)) 註三: 下例對於 i = i + 1 的用法, 可同時相容於 bash 及 dash 1) i=$(($i + 1)) 2) i=`expr $i + 1` --> 這寫法可同時相容於 busybox 的 ash C. 檢查 script 的相容性: 使用 checkbashisms 來檢查你寫的 script 是否可同時相容於 bash 及 dash, 用法如下: Terry:~/prog/script# checkbashisms for_bash.sh possible bashism in for_bash.sh line 2 ('((' should be '$(('): for (( i=1; i<=10; i++ )) 至於 bash 和 dash 語法上的差異, 可以參考下列網址: http://princessleia.com/plug/2008-JP_bash_vs_dash.pdf -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.207.134

12/30 11:54, , 1F
謝謝
12/30 11:54, 1F
文章代碼(AID): #1BENodMu (Linux)
文章代碼(AID): #1BENodMu (Linux)