매개변수가 있는 bash 스크립트에서 명령을 실행하고 싶지만 매개변수는 조건부입니다. 내가 이루고 싶은 것은 이것이다.
command --myflag var="value with space"
위의 경우 조건문을 원하며 --myflag var="value with space"
공백으로 인해 큰따옴표도 있어야 합니다(다른 이유 중 하나). 그래서 나는 이런 것을 시도했다.
if [ $somecondition ]; then
FLAG="--myflag var=\"value with space\""
fi
command $FLAG
디버그에서 위의 내용을 실행하면 실행 중인 내용이 다음과 같은 것을 볼 수 있습니다.
command --myflag 'var="value' with 'space"'
작은따옴표에 유의하세요. 왜 이런 일이 발생하는지 모르겠지만 여러 번 시도한 후에도 해결책을 찾을 수 없는 것 같습니다.
사람들은 이 문제를 어떻게 해결할 것인가?
답변1
당신은 사용해야 할 것입니다Bash 배열 확장. 그것은 다음과 같습니다:
declare -a FLAG
if [ $somecondition ]; then
FLAG=(--myflag 'var="value with space"')
fi
command "${FLAG[@]}"