は、私はこのように、いくつかのperlラインを使用したい:
perl -pe "$_=~s///e"
問題があり、bashは "$ _" 変数を展開し続けています。 perl式を一重引用符で囲むこともできますが、スクリプトに変数を追加することができなくなります。
"$ _"変数を展開する方法が停止していますか?
は、私はこのように、いくつかのperlラインを使用したい:
perl -pe "$_=~s///e"
問題があり、bashは "$ _" 変数を展開し続けています。 perl式を一重引用符で囲むこともできますが、スクリプトに変数を追加することができなくなります。
"$ _"変数を展開する方法が停止していますか?
perl -pe '$_=~s///e'
又は
perl -pe "\$_=~s///e"
ミックス・アンド・マッチ。
perl -pe '$_=~s///e; echo "'"$idontknowperl"'"'
引用セクションが互いに突き合わせる限り、それは単一の引数とみなされます。
さて、Perlコンパイラは、あなたが 'echo'メソッド/関数を呼び出したことに満足できないでしょう。 :) – tchrist
第1オフ:$ENV{myvariable}
を使用して環境変数にアクセスすることができます。 m//
,s///
、tr///
を使用する場合、$_
を指定する必要はありません。
また、変数をperlに渡したい場合は、シェル変数をperlコードに補間する以外にも、これを行う方法があります。
perl -we 'my ($var1, $var2, $var3) = @ARGV;' "$MYFOO" "$BAR" "$baz"
シェル変数に空白が含まれていない場合は、引用符を不要にすることができます。
ここで、-p
または-n
スイッチを使用する場合、その周りにも方法があります。彼らは-p
と-n
スイッチの暗黙のwhile
ループで使用されていないように、BEGIN文のshift
を使用して
perl -pwe 'BEGIN { my $var1 = shift; my $var2 = shift } #code goes here'
"$MYFOO" "$BAR" file1 file2
が@ARGV
から変数を削除します。
perlの 'ENV'は、特にシェル変数ではなく、環境変数のためのものです。 –
注意近く:ばかげていないでください。シェルプログラミングの質問は絶対にstackoverflowに属しています。 – tchrist
そこに '$ _'変数を使用する必要はありません。 – TLP
@TLP - これは単なる例でした。実際のスクリプトでは、私は本当にそれが必要でした。 :) – Rogach