변수에서 명령을 실행하면 sed에서 작동하지 않습니다

변수에서 명령을 실행하면 sed에서 작동하지 않습니다

이것은 나에게 효과적입니다.

CMD="ls -la"
$CMD

항상 실패하지만:

CMD="sed -e 's|abc|abc|g' file"
$CMD

오류 메시지가 나타납니다:

sed: -e expression #1, char 1: unknown command: `''

답변1

이는 명령줄에 명령을 입력하면 셸이 해당 명령에 대해 "확장"을 실행하기 때문입니다. 마지막 단계는 "인용문 제거"이지만 확장의 결과가 아닌 따옴표만 제거합니다. (바라보다확장하다man bash) 여기서 따옴표는 변수 확장의 일부이므로 제거되지 않습니다.

따옴표 없이 대체 단어를 입력하여 작동하게 할 수 있습니다.

cmd='sed -e s|abc|abc|g file'
$cmd

관련 정보