エイリアスを定義するときに一重引用符または二重引用符がありますか?

エイリアスを定義するときに一重引用符または二重引用符がありますか?

このように二重引用符の内容は拡張され、一重引用符の内容は拡張されないことがわかっています。

echo '$1'

与えられた

$1

しかし、

echo "$1"

与えられた

<the argument - blank in this particular example>

そして

echo $1

しかし問題はBash:パラメータを使用してawkの.bashrcにエイリアスを作成する方法なぜ二重引用符といいえエイリアスを宣言するときは、単一​​引用符を使用してください。

alias cutf="_cutf"

変える

alias cutf='_cutf'

以降の例のように一重引用符を使用します。 Web上のほとんどの例では、一部の拡張が必要な​​い限り、シングルトンを使用しています。しかし、この場合には明確な拡張がないようです。この場合、互いに置き換えて使用できますか?それとも二重引用符が必要ですか?機能定義就職しましたか?

答え1

これはOPの特定の質問に対する答えではなく、タイトル(私をここに連れて行った)によって提起された質問に対する答えです。

一重引用符は動的に評価されます。

alias QS='echo $PWD'

二重引用符は作成時に評価され、その後は変更されません。

alias QD="echo $PWD"

bash、zsh、および他のシェルでも同じ動作があります。

答え2

上記の例では、エイリアスの拡張は拡張の影響を受ける文字を含まない単語であるため、名前の参照方法に違いはありません_cutf

$ alias cutf="_cutf"
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf='_cutf'
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf=_cutf
$ alias cutf
alias cutf='_cutf'

cutfこの対話に示すように、エイリアス値を呼び出すたびに同じ結果が得られます。はい。ここで、引用スタイルは互いに置き換えて使用できます。

拡張は関数名とは何の関係もありません。少なくともbashでは、エイリアスは単純なテキスト置換を実行します(エイリアスを定義するのは役に立つことは私には明らかではありません。基本関数を直接呼び出すのは簡単です)。

答え3

とても簡単です。変数がない場合は、括弧を入れ替えて使用できます。シェルスクリプトは非常に便利ですが、非常に単純な言語でもあります。私(そして私が知っている他の人)は、習慣的に二重引用符を基に使用する傾向があり、問題が発生したことがありません。

関連情報