私は次の機能を持っています:
bar() { echo $1:$2; }
私はこの関数を次から呼び出します。その他機能、foo
。foo
呼び出し方法自体は次のとおりです。
foo "This is" a test
次の出力を取得したい。
This is:a
つまり、bar
受信したパラメータは私が渡したタグと同じでなければなりませんfoo
。
foo
この目標を達成するにはどうすればよいですか?次の2つの実装を試しましたが、どちらも機能しませんでした。
foo() { bar $*; }
- 出力:
this:is
foo() { bar "$*"; }
- 出力:
this is a test:
私の質問は実際に引数への参照を維持する方法です。これは可能ですか?
ベストアンサー1
使用"$@"
:
$ bar() { echo "$1:$2"; }
$ foo() { bar "$@"; }
$ foo "This is" a test
This is:a
"$@"
そして"$*"
特別な意味があります:
"$@"
単語拡張を実行せずに複数の単語に拡張します(例"$1" "$2" ...
:)。"$*"
位置パラメーターをIFSの最初の文字に関連付けます(IFSが設定されていない場合はスペースを使用し、IFSが空の場合は連結しません)。