![$($var)에서 오류가 발생하는 이유는 무엇입니까?](https://linux55.com/image/138879/%24(%24var)%EC%97%90%EC%84%9C%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%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.png)
셸에서 다음 코드를 실행하려고 하는데 예상한 결과가 나오지 않습니다. 명령은 다음과 같습니다.
i=1
echo $($i)
오류가 발생합니다.
Command not found error
오류를 발생시키는 대신 첫 번째 명령줄 인수의 값을 표시해야 한다고 생각합니다.
답변1
왜냐하면 구조물 $(...)
은명령 대체, 즉 $($i)
변수의 내용을 실행하는 것을 의미합니다 $i
. 귀하의 경우에는 1
쉘이 찾을 수 없는 명령을 실행하려고 시도합니다 .
아래에서 어떻게 실패하는지 확인하세요. 하지만 "1"이라는 스크립트를 생성하면 작동합니다.
예:
$ i=1
$ echo "$($i)"
-bash: 1: command not found
$ cat >1
#!/bin/bash
echo Hello World
$ chmod 755 1
$ PATH=$PATH:`pwd`
$ echo "$($i)"
Hello World
$
첫 번째 명령줄 인수의 값을 표시하려면 $1
다음을 수행해야 합니다.${1}
$ cat >mytest
#!/bin/bash
echo "arg 1 is $1"
echo "arg 1 is ${1}"
$ chmod 755 mytest
$ ./mytest foo
arg 1 is foo
arg 1 is foo
$