在 embedded linux 與桌上型 linux 不同的是, 你通常不會有獨立的 bash shell 與各種好用的
command, embedded linux 還是可以提供你一個 shell 環境與少許的 command, 而這些都被
整合到一個叫 busybox 的執行檔裡
最近要在一塊板子上寫個簡單的 script, 裡面只有一個 for loop, 但 shell 一直告訴我語法錯誤
後來發現板子上不是在用 bash shell, 而是 busybox 提供的 shell 環境
餵狗後發現 busybox script 支援的語法少的可憐, 網路上有用 seq 跟 awk 來做 for loop 的範
例
這個人看起來對 busybox 諸多抱怨, 但老實說我覺得連 for loop 都不支援的 shell 真的有點爛
http://linux.byexamples.com/archives/549/bttb-looping-for-shell-script-under-embedded-linux/
http://microdevsys.com/wp/how-to-create-a-for-loop-to-print-a-sequence-or-range-of-numbers-on-dd-wrt-or-busybox-devices-linux/
雖然是很舊的文章了,但老實說,busybox的ash是有支援 for loop,只是因為是embedded system使用的,很多功能被簡化。但for loop是已經堪用。像例子裡要做一個1 到 1000的loop, 只要使用busybox的seq就可以了
回覆刪除for index in `seq 1000`
找到一兩篇批評ash的文章就評斷busybox的ash有點爛?
辦法都是人想出來的
回覆刪除busybox 之所以好用,正是因為它的精簡
for loop 可以搭配 seq 使用
要是沒有開啟 seq 的話,也可以使用 while loop 達到一樣的功效:
i=1; M=1000; while [ $i -le $M ]; do
echo $i;
let i=$i+1;
done