2つの配列があります
$ arr1=( 1 2 2 3)
$ arr2=( 2 3 3 4)
二重引用符配列拡張のベストプラクティスに従うと、奇妙な出力が生成されるのはなぜですか?
$ tsort << EOF
> "${arr1[@]}" "${arr2[@]}"
> EOF
"1
"2
2
3
3"
4"
そして、ベストプラクティスに従わないと正しい結果が出ますか?私は何をすべきですか?ありがとうございます。
$ tsort << EOF
${arr1[@]} ${arr2[@]}
EOF
1
2
3
4
ここでは、単語の分割がまだ行われていると思います。
$ wc -l << EOF
a
b
1
EOF
3
ベストアンサー1
~からバッシュマニュアル:
[...]この文書のすべての行はパラメータ拡張、コマンド置換、および算術拡張を経て、文字の順序は無視され、 ''
\newline
、''、および''文字は\
''を使用して引用する必要があります。\
$
`
引用符の削除、フィールドの分割、またはファイル名の拡張については何も言わないため、区切られた文書の引用符は文字通り受け入れられ、一般的な機能を実行しません。