![일부 명령은 변수를 통해 실행될 수 있고 다른 명령은 실행되지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/163487/%EC%9D%BC%EB%B6%80%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%EB%B3%80%EC%88%98%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EC%88%98%20%EC%9E%88%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
따라서 몇 가지 간단한 명령을 변수에 넣은 다음 줄 시작 부분에서 해당 변수를 호출하면 실제로 해당 명령이 사용됩니다. 예를 들어:
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"