シェルスクリプトでパイプを利用して変数格納する方法

| コメント(0) | トラックバック(1)

$argvだと引数取得するけど、 パイプ経由や標準入力経由の取得方法がわからなかったので 調べてみた。

cmd
$ bash -c 'echo -e "foo bar baz" |while read   i;do echo  ${i} ;done; '
foo bar baz

だめな例

cmd
$ bash ' echo  "foo bar baz" |  read cont ; echo $cont'

このread利用での変数格納は、ローカル変数扱いになるのでcontに格納後すぐに捨ててしまう。 そこで、正しくはwhile等を利用すると動く。

標準入力からの変数格納方法

-test.sh

bash
#!/bin/bash

content=""
while read  buffer;
do
    content=$content$buffer"\n";
done;
content=`echo -e $content`

-実行

cmd
$ echo  "foo bar baz" | ./test.sh
foo bar baz

おまけ、出力結果を変数に入れる

cmd
  cont=`ls`

関連記事

トラックバック(1)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/63

大量の画像ファイルのファイル名を一部だけ変更する必要があったので、下記を参考にしつつzshでワンライナースクリプトを書いてやってみました。 シェルスクリプ... 続きを読む

コメントする

PR

PR





検索

Loading

メニュー

twitter