Bash変数に複数行を保存しようとしても機能しないようです。
たとえば、/bin
1行にファイルを一覧表示して保存して$LS
から$LS
stdinに渡すと、wc
常に1が返されます。
$ ls -1 /bin | wc -l
134
$ LS=$(ls -1 /bin); wc -l <<< $LS
1
画面に出力しようとすると、さまざまな結果が表示されます。echo
すべての行を1行に印刷しますが、printf
最初の行だけを印刷します。
#!/bin/bash
LS=$(ls -1 /bin)
echo $LS
printf $LS
それでは、bash変数に複数の行を含めることができますか?
ベストアンサー1
二重引用符で囲む必要があります(そしてしなければならない 二重引用符変数ほとんどの場合):
echo "$LS"
しかし、エコを使用しないでください変数の内容を印刷するには、次のようにします。printfに変更:
printf '%s\n' "$LS"