web-dev-qa-db-ja.com

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

二重引用符の内容は拡張されますが、一重引用符の内容は拡張されないことを知っています。

echo '$1'

与える

$1

どこで

echo "$1"

与える

<the argument - blank in this particular example>

と同じ

echo $1

ただし、質問 Bash:パラメーターを使用してawkの.bashrcにエイリアスを作成する方法 は、なぜ二重引用符とnotなのか疑問に思いました。 -)エイリアスを宣言するときに一重引用符が使用されたため、次のようになります。

alias cutf="_cutf"

の代わりに

alias cutf='_cutf'

後者の例のように、一重引用符を使用します。 Web上のほとんどの例では、拡張が必要な​​場合を除いて、シングルも使用しています。しかし、この場合、私の目には拡大は見られません。この場合、それらは交換可能ですか、それとも関数定義が使用されているため、二重引用符が必要ですか?

4
Greenonline

あなたが言及した例では、エイリアスの展開が展開の対象となる文字を含まない単一の単語である場合、名前の引用方法に違いはありません_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
dhag

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

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

alias QS='echo $PWD'

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

alias QD="echo $PWD"

同じ動作がbash、zsh、そしておそらく他のシェルにも見られます。

9
zzapper

とても簡単です。変数がない場合、角かっこは交換可能です。シェルスクリプトは非常に便利ですが、非常に単純な言語でもあります。私(および私が知っている他の何人か)は、習慣の力から、デフォルトで二重引用符を使用する傾向があります-そして私は問題に遭遇したことがありません。

2
felixphew