sed 명령으로 인용된 변수는 오류를 생성합니다.

sed 명령으로 인용된 변수는 오류를 생성합니다.

이 스크립트가 있습니다.

num='[0-9]'
sedcmd='-e "s/${num}/as df/g"'
echo 123 | sed -r $sedcmd

마지막 줄은 다음과 같은 결과를 생성합니다.

sed: -e 표현식 #1, 문자 1: 알 수 없는 명령: `"'

내가 놓친 게 무엇입니까?

답변1

쉘 명령을 저장하기 위해 변수를 사용하지 말고 대신 배열을 사용하십시오. 바라보다BashFAQ-50 명령을 변수에 넣으려고 하는데 복잡한 경우에는 항상 실패합니다.

아래와 같은 배열을 사용할 수 있습니다.

num='[0-9]'
argArray=('-e' "s/${num}/as df/g")

그리고 단어가 토크나이저에 의해 분할되어 다음과 같이 호출되는 것을 방지하기 위해 배열 확장에 큰따옴표를 추가합니다.

echo 123 | sed -r "${argArray[@]}"

관련 정보