たとえば、シェルスクリプトで次のコマンドを実行したいとします。
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
コマンドラインで実行したときにどうすればよいのですか?/directory
one
答え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[@]}"