Bash의 큰 따옴표

Bash의 큰 따옴표

두 개의 큰따옴표 사이에 인수를 제출해야 하는 프로그램을 호출하는 bash 파일을 만들려고 합니다.

내 파일의 내용을 살펴보세요.

#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &

echo 부분은 필요한 명령을 정확하게 인쇄하지만, 실행하면(다음 줄) 엉망이 됩니다.

이 문제를 어떻게 해결할 수 있나요?

감사해요!

이것이 내가 호출하는 방법입니다:

./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config

에코 결과:

./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config

통화 결과:

demos: error: unrecognized arguments: parameter

에코 결과를 복사하여 붙여넣습니다.

INFO:yowsup.demos.sendclient.layer:Message sent

답변1

echo출력에서 이를 보려면 명령에서 따옴표를 이스케이프해야 하지만 실제 명령에서는 이스케이프해서는 안 됩니다.

#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &

$2여러 단어가 포함된 분할을 방지하기 위해 실제 명령에 따옴표가 사용됩니다 .

답변2

나는 (거의) 항상 모든 것을 "echo"로 인용하므로 위와 같이 할 것입니다.

#!/bin/bash
echo "./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &"
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &

@muru의 솔루션과의 차이점은 원래 echo 명령이 "백그라운드에서" 실행된다는 것입니다. 여기서는 전경 화면에 에코되지만 배경 명령으로 실행됩니다. (@muru는 또한 명령 끝에 앰퍼샌드를 표시하지 않습니다.)

관련 정보