エイリアスのパラメータを一度使用した後はどうなりますか? [コピー]

エイリアスのパラメータを一度使用した後はどうなりますか? [コピー]

なぜこれは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文字列arg1sumを渡すだけですarg2

$ echo arg1 arg2

関連情報