関数の$ 1がスクリプトの最初の引数を印刷しないのはなぜですか?

関数の$ 1がスクリプトの最初の引数を印刷しないのはなぜですか?

この単純なbashスクリプトがなぜ印刷されないのですかecho $1$1

#!/bin/bash
# function.sh
print_something () {
echo $1
}
print_something

$ ./function.sh 123  -> why doesn't it print '123' as a result?

ベストアンサー1

位置パラメータはスクリプトの基本レベルにあるスクリプトパラメータを参照しますが、機能パラメータ関数本体の内部。だから

print_something Something

実際に印刷されますSomething

スクリプトから関数に引数を渡すには、これを明示的に実行する必要があります。使用

print_something "$1"

最初の引数を渡すか

print_something "$@"

これらすべてを通して、例の関数は最初の関数のみを使用します。

おすすめ記事