Bash에 따옴표와 공백이 포함된 변수 추가

Bash에 따옴표와 공백이 포함된 변수 추가

매개변수가 있는 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[@]}"

관련 정보