이것은 나에게 효과적입니다.
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