질문:
#!/bin/bash
x=$1
perl -lne 'print "$x is $_"' $1
Perl-oneliner를 통해 인쇄할 때마다 $1
네 번째 줄에서 평가를 수행하고 작은따옴표 안에 평가된 값을 인쇄하려면 어떻게 해야 합니까 ?$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