두 개의 큰따옴표 사이에 인수를 제출해야 하는 프로그램을 호출하는 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는 또한 명령 끝에 앰퍼샌드를 표시하지 않습니다.)