2017年1月21日 星期六

busybox -- embedded linux 的瑞士軍刀

在 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/

2 則留言:

  1. 雖然是很舊的文章了,但老實說,busybox的ash是有支援 for loop,只是因為是embedded system使用的,很多功能被簡化。但for loop是已經堪用。像例子裡要做一個1 到 1000的loop, 只要使用busybox的seq就可以了
    for index in `seq 1000`

    找到一兩篇批評ash的文章就評斷busybox的ash有點爛?

    回覆刪除
  2. 辦法都是人想出來的

    busybox 之所以好用,正是因為它的精簡

    for loop 可以搭配 seq 使用

    要是沒有開啟 seq 的話,也可以使用 while loop 達到一樣的功效:

    i=1; M=1000; while [ $i -le $M ]; do
    echo $i;

    let i=$i+1;
    done

    回覆刪除