外部コマンドの実行結果を 1 行ごとに取得する (bash) - Linux シェルスクリプトプログラミング
PROGRAM
外部コマンドの実行結果を 1 行ごとに取得する (bash)
Linux シェルスクリプトでは、外部コマンドを簡単に呼び出せるようになっています。
その方法については 外部コマンドを実行して結果を変数に代入する で触れましたけど、外部コマンドを実行して得た結果を 1 行ごとに解析して処理を続けたい場合もあると思います。
外部コマンドを実行した結果を 1 行ずつ取得するには、bash 限定になるようですけど、次のようにして行うことができました。
#!/bin/bash
while read LINE
do
# たとえば、実行結果を 1 行ずつ、先頭に ">> " をつけて表示します。
echo ">> $LINE"
done < <(/usr/sbin/pppd call $NAME updetach)
少しややこしいコマンドを実行していますが、ともあれ done の後に " < <" と続けて、括弧の中に実行したいコマンド(ここでは "/usr/sbin/pppd call $NAME updetach")を記載することで、このコマンドの実行結果を 1 行ずつ LINE という名前の変数に格納して、do-done ブロック内の処理を行うことができました。
留意事項としては、"<" と "<" との隙間にちゃんと空白を挟まないといけないことや、実行環境は sh ではなく bash にしなくてはいけないところでしょうか。
[ もどる ]