コマンドの途中で「$@」挿入パラメータを作成するには?

コマンドの途中で「$@」挿入パラメータを作成するには?

"$@"学習のために命令の途中にパラメータを挿入しようとしています。これが最適なのかはわかりませんが、これが私がやろうとしていたのです。これが私が持っているものです:私がそれを実行すると、私が印刷したいものがtest.sh foo実行されます。代わりに印刷中です。これが期待される動作かどうかを知りません。echo "$@" barfoo barbar foo

test.sh foo
# runs
echo "$@" bar
# which is printing
bar foo

編集する:コンテキストを単純化し、実際に使用しようとしています。"$@" エイリアスとして。

ベストアンサー1

エイリアスは単なる置換であり、独自にパラメータを使用しません。したがってalias x='echo "$@" bar'、(*)があり、実行すると、x foo次のようになります。

echo "$@" bar foo

つまり、xエイリアスをコンテンツに置き換え、残りの部分を最後に保ちます。今、"$@"実行コンテキストのパラメータのリスト。x foo。通常、引数リストに何もない対話型シェルが削除された可能性が"$@"あります。ただし、パラメータリスト(位置パラメータ)に項目がある場合は、その場所で展開されます。

$ alias x='echo "$@" bar'
$ set -- args here
$ x foo
args here bar foo

代わりに関数やスクリプトファイルを使用しても問題ありません。次のように印刷する必要がありますfoo bar

f() {
    echo "$@" bar
}
f foo

asは次のように実行する必要があります./s.sh foo。 ifs.shは実行可能で、対応するecho行を含みます。

望むより:

(*はtestのような標準コマンドなので[ .. ]...まあ、この種のテスト目的には使用しない方が最善です。)

おすすめ記事