셸에서 다음 코드를 실행하려고 하는데 예상한 결과가 나오지 않습니다. 명령은 다음과 같습니다.
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
$