Perl 코드에 bash 변수를 삽입하는 데 문제가 있습니다. 이 코드의 목적은 bash 스크립트 파일을 사용하여 터미널에서 특정 perl 인쇄 명령을 실행하는 것입니다. 문제를 다음 코드로 단순화했습니다.
i=5
myvar=$(perl -e 'print "AAA" x ($i)')
echo "$myvar"
값이 5인 변수 i가 있는데, i의 값만큼 문자열 "AAA"를 인쇄하고 싶습니다. 이 경우에는 5입니다. 이를 위해 주어진 Perl 코드를 사용하고 싶습니다. 현재 Perl 코드는 내 변수 i의 내용을 읽을 수 없습니다. 이는 i의 값을 구하는 부분에 ""를 사용하지 않았기 때문일 가능성이 높습니다.
문자열 "AAA"가 쉘코드의 16진수 코드로 대체되기 때문에 '와 "를 전환하는 것은 실제로 가능성이 없습니다. $를 사용하여 Perl 코드를 실행하려면 터미널에서 a에 대한 인수로 실행되어야 합니다. 물론 i는 The입니다. 루프에서 값이 증가/변경되므로 i 대신 5를 사용할 수 없습니다.
Perl 코드가 i 값을 읽을 수 있도록 하거나 주석을 통해 이 문제를 해결하는 데 도움이 되셨나요?
답변1
변수 확장을 활성화하려면 다음을 사용하십시오.
myvar=$(perl -e 'print "AAA" x ('"$i"')')
답변2
Perl에는 기본 형태의 옵션 구문 분석이 내장되어 있습니다. awk의 옵션과 매우 유사하게 작동 -v
하지만 더 추악합니다.
myvar=$(perl -s -e 'print "AAA" x ($j)' -- -j="$i")
$i
쉘을 Perl 변수로 Perl에 전달 합니다 $j
. -j
Perl 바이너리 자체가 삼키지 않도록 이중 하이픈이 필요합니다 .
답변3
문제는 사용하는 참조 유형입니다. 작은따옴표로 인해 쉘 변수가 확장됩니다.아니요완료됩니다.
i=5
myvar=$(perl -e "print 'AAA' x ($i)")
echo "$myvar"
코드가 예상대로 작동합니다.