$($var)에서 오류가 발생하는 이유는 무엇입니까?

$($var)에서 오류가 발생하는 이유는 무엇입니까?

셸에서 다음 코드를 실행하려고 하는데 예상한 결과가 나오지 않습니다. 명령은 다음과 같습니다.

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
$

관련 정보