例如,我想在 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
解释为单独的实体,当在命令行中执行它时,它怎么会不这样做呢?/directory
one
答案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[@]}"