シェル プログラミングでは、適切な引用符を使用する必要があります。そのため、パラメーター展開は、展開内の空白に関して正しいことを行ったり、単語の分割が邪魔になるのを防いだりします。標準的な例は、名前に空白が含まれるファイルです。
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
トークンに続く単語として
このリストは完全ですか?そうではないと確信しています。