このドキュメントの二重引用符配列拡張がここで機能しないのはなぜですか?

このドキュメントの二重引用符配列拡張がここで機能しないのはなぜですか?

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 、''、および''文字は\''を使用して引用する必要があります。\$`

引用符の削除、フィールドの分割、またはファイル名の拡張については何も言わないため、区切られた文書の引用符は文字通り受け入れられ、一般的な機能を実行しません。

おすすめ記事