일부 명령은 변수를 통해 실행될 수 있고 다른 명령은 실행되지 않는 이유는 무엇입니까? [복사]

일부 명령은 변수를 통해 실행될 수 있고 다른 명령은 실행되지 않는 이유는 무엇입니까? [복사]

따라서 몇 가지 간단한 명령을 변수에 넣은 다음 줄 시작 부분에서 해당 변수를 호출하면 실제로 해당 명령이 사용됩니다. 예를 들어:

yes@no:~$ nnn="ls -l Super"
yes@no:~$ $nnn
-rw-rw-rw- 1 yes yes 6 May 29 19:46 Super

case그러나 특수 문자가 포함된 항목을 사용하려고 하거나 또는 같은 항목을 사용하려고 하면 if작동하지 않습니다.

yes@no:~$ nnn="ls -l|grep Super"
yes@no:~$ $nnn
ls: invalid option -- '\'
Try 'ls --help' for more information.

또는:

yes@no:~$ duper="if [[ ${ar} -eq 2 ]]; then echo yes; else echo no; fi"
yes@no:~$ "$duper"
if [[  -eq 2 ]]; then echo yes; else echo no; fi: command not found

분명히 여기에는 내가 이해하지 못하는 더 깊은 뭔가가 있습니다.

답변1

따옴표 줄 바꿈은 특수 문자를 이스케이프 처리하여 리터럴로 처리합니다. 당신이 찾고 있는 행동을 유발하기 위해서는 당신이 해야 할 일이 있습니다.

eval "$nnn"
eval "$duper"

관련 정보