ファイルリストを含む変数から複数のファイルの合計サイズを取得します。

ファイルリストを含む変数から複数のファイルの合計サイズを取得します。

ファイル名にスペースを含めることができるいくつかのファイルの合計サイズを確認したいと思います。

cd /tmp
touch "a0 1"
touch "a1 1"

このファイル名を変数に入れてリストを作成します。

var0="/tmp/a0 1"
var1="/tmp/a1 1"
var2=`echo -e "$var0\n$var1"`

今自分自身をチェックしてこのリストを印刷すると、すべてが大丈夫だと思います。

echo "$var2"
#returns:
#/tmp/a0 1
#/tmp/a1 1

ただし、全体のサイズを取得しようとすると、「\n」記号を誤って解釈します。

du "$var2"
#returns:
#du: cannot access ‘/tmp/a0 1\n/tmp/a1 1’: No such file or directory

duプロセス"\ n"を行区切り文字にする方法は?それとも、リストを異なるものにする必要がありますか?

ベストアンサー1

代わりに配列を使用することをお勧めします

var2=( "$var0" "$var1" )

du "${var2[@]}"

バラよりBashGuide/配列

おすすめ記事