2011年10月20日木曜日

シェル変数をperlで扱う

備忘録。

シェルスクリプトを書いていて、便利なperlの力を借りたくなる時がある。
何度か「どうだったっけ?」と調べているので、備忘録として書いておこう。

hogeというシェル変数をperl上で扱いたいなら、シェルに展開させればいいので

hoge="hogehoge"
perl -e 'print \"$hoge\";' 
あるいはperl -e 'print "'$hoge'"';

環境によってはどっちかしか動かなかったりするみたい。

joinコマンドに渡すパラメタを作りたくて使ったのが下記。
( $field_num はフィールド数を格納したシェル変数 )

OUT_PARAM=`perl -e 'foreach ( 1..'$field_num' ) { print "1.$_ ";}'`
これで1.1 1.2 1.3 1.4 ...というような文字列が返される


2012.12.27 追記

perlのバージョンなのか、別のサーバでうまく動かなかったので、再度調べてみた。
一番いいのは、環境変数に突っ込んでしまうことみたい。


export hoge="hogehoge" 
perl -e 'print "$ENV{hoge}";' 
※export の代わりにtypeset -x でもOK


シェルスクリプトの中で環境変数に入れれば、子プロセスには引き継がれるけど、親が終われば、そこで元に戻るので、他に影響はないはず。

こっちの方が確実みたいです!

0 件のコメント: