私はちょうどBashを学び始めたので、次の質問があまりにも基本的に見えるかもしれないことをお詫び申し上げます。
シェルスクリプトで引用符の使用を理解するのに問題があります。
書きたいなら
a="file"
b="`grep " a" "$a"`"
echo $b
"$a" と "a" を引用符 "`grep" a" "$a"`" で読む必要がありますか?
それとも左から右に読みますか?
変数を二重引用符で囲む方法を学んだからです。
私をさらに混乱させることは、先生がシステムが変数名とそれに続くテキストを誤解するのを防ぐために、変数名の周りに別の二重引用符を追加する必要があると言ったことです。
入れ子になった引用符は何をしますか?いつ引用符を使用する必要がありますか?
ベストアンサー1
一重引用符は入れ子にすることはできませんが、バックティックは二重引用符で特別です。
$()
バックティックの代わりにこれを使用する方が読みやすく簡潔です。彼らはすべて意味コマンドの置き換えつまり、含まれているコマンドの出力に展開されます。
b="$(grep " a" "$a")"
ただし、割り当てに外部二重引用符を使用する必要はないため、以下は同じです。
b=$(grep " a" "$a")
ご質問が変更されましたので、詳細を追加してみましょう。単語の区切りを防ぐには、どこでも二重引用符を使用する必要があります。変数名の問題は、以下で最もよく説明されています。
echo "$var1_$var2" # two variables, $var1_ and $var2
echo "$var1"_"$var2" # two variables, $var1 and $var2, separated by an underscore
# also possible:
echo "${var1}_$var2"