$($ 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
$

おすすめ記事