シェルスクリプトを書いていて、便利な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 件のコメント:
コメントを投稿