スクリプトのコマンドにディレクトリリスト(スペースを含む)を渡す

スクリプトのコマンドにディレクトリリスト(スペースを含む)を渡す

たとえば、シェルスクリプトで次のコマンドを実行したいとします。

tar cvpzf /destination/backup.tgz /directory\ one /directory\ two

より簡単なメンテナンスのために、スクリプトの上部にある変数にパスリスト(スペースを含む)を割り当てたいと思います。

"/directory\ one /directory\ Two" を変数に割り当てて変数に渡すにはどうすればよいですか?例tar:

#!/bin/sh
backup_dirs=?????????
tar cvpzf /destination/backup.tgz $backup_dirs

とは別のエンティティとして解釈されませんが、tarコマンドラインで実行したときにどうすればよいのですか?/directoryone

答え1

引用します:

dir1="directory 1"
dir2="directory 2"

tar cvpzf /destination/backup.tgz "$dir1" "$dir2"

または、シェルがそれをサポートしている場合(質問にタグ付けされたbashですが、スクリプトでsh使用されているbashはサポートしていません)、配列を使用してください。

targets=( "directory 1" "directory 2" )
tar cvpzf backup.tgz "${targets[@]}"

関連情報