2009-09-22 4 views
2

이중 따옴표가있는 플래그가 필요한 펄 스크립트를 실행중인 배쉬 스크립트를 작성하고 있습니다. 당신이 내 스크립트에서bash 스크립트의 명령에 대한 플래그의 리터럴 따옴표

$ perl script.pl -flag="something" -anotherflag="somethingelse" 

를 실행하는 것, 일반적으로 스크립트를 실행, 나는 이러한 플래그 변수를 사용하고 있지만, 쌍 따옴표를 보존하고 싶은, 그래서 내가 좋아하는 뭔가가 있습니다

variable=foo 
perl script.pl -flag=\"something\" -anotherflag=\"$variable\" 

때를

perl script.pl '-flag="something"' '-anotherflag="foo"' 
,536 : 나는 bash -x myscript.sh 실행, 나는 에러 펄 스크립트를 일으키는 원인이되는 쌍 따옴표를 유지하면서 는 전체 플래그 주위 작은 따옴표를 추가하는 참조

나는 또한 eval () 전체를 보내려고했고, 이중 따옴표를 모두 제거했습니다. Bash는 이중 인용 부호를 그대로 사용하여 스크립트를 실행할 수 있습니까?

+0

"실행을 시도합니다"의 이중 따옴표는 매우 손상되지 않으며 대시는 불가사의하게 사라졌습니다 (오타가 될 수 있습니다)? 문제가 무엇인지 더 잘 설명 할 수 있습니까? ? Btw, varoutput이 아니라면 $ 변수에 무엇이 있습니까? –

+0

선행 대시는 오타였습니다. 결정된. –

답변

0

말 ... :

Running the script normally, you would run

$ perl script.pl -flag="something" -anotherflag="somethingelse"

...하지만 다음 $ 프롬프트에서 실행 쉘은 " 제거하는 것입니다 : (그들은 단지 자신의 역할을 한 것 펄의 스크립트를 볼 수 없을 것입니다 공백을 방지하고 '>', '<', '|'등과 같은 특수 문자가 그 안에 해석되는 것을 방지합니다. 공백이나 특수 문자는 arg의 일부로 전달됩니다. 값을 지정하면 (공백이나 특수 문자가없는 경우), 큰 따옴표는 전혀 쓸모가 없으므로 값을 생략해도 아무런 차이가 없습니다. 즉 실제로 원하는 효과 경우

어쨌든, 당신의 bash는 스크립트에서 수행

perl script.pl -flag="something" -anotherflag="$variable" 

(또는, 따옴표를 생략 - 그것은 주위 $variable 무관심, 주변 something 절대적으로 무관심의에서와 같은 경우 귀하의 예는 단지 foo이지만 모든 경우는 그렇지 않습니다.)

관련 문제