なぜこれはarg
一度だけ印刷されますか?
$ alias test="echo $1 $1 $1"
$ test arg
arg
これはGNU bashバージョン4.2.25(1)リリース(x86_64-pc-linux-gnu)にあります。
答え1
alias
エイリアスを定義したら、コマンドを使用してエイリアスを一覧表示すると、それを明確に理解できます。
alias test="echo $1 $1 $1"
alias
出力:
alias test='echo '
実行時に定義された変数のみを含む文字列に展開されます。たとえば、次のように動作します(Vvariable MY_VARが定義されています)。
MY_VAR="foo"
alias test="echo $MY_VAR $MY_VAR $MY_VAR"
alias
出力:
alias test='echo foo foo foo'
機能に置き換えることができます。
function test() {
echo $1 $1 $1
}
答え2
$1、$2、... 役に立つかどうか疑問ですalias
。これについては沈黙します。
test arg
したがって、あなたの命令はに拡張されたと思いますecho $1 $1 $1 arg
。 $ 1が空の場合は結果が得られます。
別の例を見てください:
$ alias test='echo $1 $1 $1'
$ test arg1 arg2
arg1 arg2
上記の例ではalias test=...
getが実行され、最終的な効果はcommandのエイリアスを取得することですecho
。コマンドを実行してこの効果を確認できますtest arg1 arg2
。私たちがすることは、実行してecho
文字列arg1
sumを渡すだけですarg2
。
$ echo arg1 arg2