-2

シェル プログラミングでは、適切な引用符を使用する必要があります。そのため、パラメーター展開は、展開内の空白に関して正しいことを行ったり、単語の分割が邪魔になるのを防いだりします。標準的な例は、名前に空白が含まれるファイルです。

DIR="My Documents"
cd $DIR              # Tries to "cd My".
cd "$DIR"            # Works.

興味深いことに、単語分割が実行されないため、他の場所では引用符は必要ありません。

SAVE_DIR=$DIR        # Assigns "My Documents", not just "My".
case $DIR in
   (My Documents)  printf 'My Documents\n';;   # This is output.
   (My)            printf 'My\n';;
esac

しかし、これは再び失敗します:

test $DIR = "My Documents"   # Error: condition expected: My

もちろん、常にパラメーター展開を二重引用符で囲むなどの厳格で迅速なルールを考え出すこともできます。でも、毎日賢くなるために、

二重引用符が省略可能になるのはいつですか? これまでのところ、私は見ることができます

  • 変数代入 (単一展開のみ)
  • caseトークンに続く単語として

このリストは完全ですか?そうではないと確信しています。

4

1 に答える 1

0

あなたがリストしたもの以外に、 chepnerが指摘したように、私は二重括弧に出くわしただけです

$ set bird dog mouse

$ [[ $* = 'bird dog mouse' ]]; echo $?
0

また、ヒアストリングスでは引用符はオプションです

$ cat <<< $*
bird dog mouse

$ cat <<< "$*"
bird dog mouse

変更された IFS を除く

$ IFS=: cat <<< $*
bird dog mouse

$ IFS=: cat <<< "$*"
bird:dog:mouse
于 2013-04-29T02:36:18.650 に答える