代替変数文字列をパターンとして使用するcksumファイル

代替変数文字列をパターンとして使用するcksumファイル

以下の例ではこれを回避できますかeval?それとも別の方法はありませんか?変数のファイルリストは動的であり、すべてのファイルの合計を計算したいと思います。このディレクトリには他の多くのファイルがありますが、無視する必要があります。

$ Z="file1 file4"
$ echo ${Z//\ /,}
file1,file4
$ echo {${Z//\ /,}}
{file1,file4}
$ cksum {file1,file4}
927007485 136284 file1
2748059092 136286 file4
$ cksum {${Z//\ /,}}
cksum: {file1,file4}: No such file or directory
$ eval cksum {${Z//\ /,}}
927007485 136284 file1
2748059092 136286 file4

ベストアンサー1

文字列の代わりに配列を使用してください。

files=( file1 file2 "filename with spaces" file50 "*my* file" )

cksum "${files[@]}"

上記の各二重引用符は、特にファイル名にスペースまたはファイル名のワイルドカード文字が含まれている場合に重要です。

おすすめ記事