質問:
#!/bin/bash
x=$1
perl -lne 'print "$x is $_"' $1
Perl-onelinerで印刷するたびに$1
4行目で評価を実行し、一重引用符で評価された値を印刷するにはどうすればよいですか?$1
答え1
さまざまな方法:
Perl onelinerへの入力として変数を渡します。
perl -le 'print "\$x is $ARGV[0]"' "$x"
変数をエクスポートし、
%ENV
Perlのハッシュを使用して印刷します。export x="$1" perl -le 'print "\$x is $ENV{x}"'
Perlスクリプトには二重引用符を使用してください。
perl -le "print \"\\\$x is $x\""
シェルスクリプトでは、次のように表示されます。
#!/bin/bash
export x=$1
echo "Approach #1"
perl -le 'print "\$x is $ARGV[0]"' "$x"
echo "Approach #2"
perl -le 'print "\$x is $ENV{x}"'
echo "Approach #3"
perl -le "print \"\\\$x is $x\""
aoveを別の名前で保存しfoo.sh
、「foo」を引数として実行すると、次の結果が表示されます。
$ foo.sh foo
Approach #1
$x is foo
Approach #2
$x is foo
Approach #3
$x is foo