이 스크립트가 있습니다.
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[@]}"