[問題] shell for loop

看板Linux作者 (screct)時間11年前 (2014/06/26 23:47), 編輯推噓3(3019)
留言22則, 8人參與, 最新討論串1/2 (看更多)
小弟新公司的伺服器大概是30年前HP的Unix系統 最近在寫shell時碰到一些for loop沒辦法執行的困擾 for abc in a b c do OOXX done 這類的for loop他有支援 但是像 for ((int i=0;i++;i<100)) do OOXX done 這類的沒有辦法執行 所以在寫程式上遇到很多困難 想請問版上的高手有沒有解法 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.108.37 ※ 文章網址: http://www.ptt.cc/bbs/Linux/M.1403797634.A.D23.html

06/26 23:51, , 1F
換個 shell 試試
06/26 23:51, 1F

06/26 23:54, , 2F
我們這科可能更改的權限
06/26 23:54, 2F

06/26 23:54, , 3F
沒有
06/26 23:54, 3F

06/26 23:56, , 4F
i=0
06/26 23:56, 4F

06/26 23:56, , 5F
while [ $i -lt 100 ]
06/26 23:56, 5F

06/26 23:57, , 6F
do
06/26 23:57, 6F

06/26 23:57, , 7F
OOXX
06/26 23:57, 7F

06/26 23:57, , 8F
i=`expr $i + 1`
06/26 23:57, 8F

06/26 23:57, , 9F
done
06/26 23:57, 9F

06/27 00:17, , 10F

06/27 01:33, , 11F
也可試試 for i in $(seq 1 100); do OOXX; done
06/27 01:33, 11F

06/27 01:34, , 12F
或fo i in {1..100}; do
06/27 01:34, 12F

06/27 01:34, , 13F
fo => for
06/27 01:34, 13F

06/27 15:27, , 14F
並不是每個系統都有 seq
06/27 15:27, 14F

06/27 15:27, , 15F
也不是每個 shell 都支援 {1..100}
06/27 15:27, 15F

06/27 15:28, , 16F
我覺得上面那個 while 會是比較好的解法
06/27 15:28, 16F

06/27 15:31, , 17F
不過 expr 那行因為每次都要執行外部的可執行檔
06/27 15:31, 17F

06/27 15:31, , 18F
因此迴圈比較長的時候可能效率不太好
06/27 15:31, 18F

06/27 15:32, , 19F
可以考慮改用 $(( $i + 1 ))
06/27 15:32, 19F

06/28 04:07, , 20F
HP-UX預設應該是Bourne shell,不是BASH,有些語法
06/28 04:07, 20F

06/28 04:07, , 21F
不相容
06/28 04:07, 21F

07/04 19:46, , 22F
for i in `seq 100`
07/04 19:46, 22F
文章代碼(AID): #1Jh422qZ (Linux)
討論串 (同標題文章)
文章代碼(AID): #1Jh422qZ (Linux)