シェルで次のコードを実行しようとしましたが、期待した結果は得られません。コマンドは次のとおりです。
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
$