将目录列表(包含空格)传递给脚本中的命令

将目录列表(包含空格)传递给脚本中的命令

例如,我想在 shell 脚本中执行以下命令:

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"

或者,如果您的 shell 支持它(bash,您已用其标记您的问题,但sh您在脚本中使用的 bash 不支持),请使用数组:

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

相关内容