我有一个bash 脚本我使用 GPG 和 tar 进行加密/解密。目前,我已将其--exclude
硬编码到脚本中,但我想使其更具动态性,并在运行脚本的加密部分时将要排除的项目添加为参数。
基本上,我正在尝试找出一个循环(或其他选项)来用参数值替换下面的排除项。目前,参数分配如下:
$1
=来源
$2
=目的地
$3
=文件名
$4
=收件人的公共 gpg 密钥
我想要实现的是将提供的任何参数$5
设置为排除的文件/目录。
我到处寻找循环选项来创建连接变量--exclude
和提供的值,但一无所获。在此先感谢您的帮助。
tar -cpJ --exclude ~/VirtualBox_VMs --exclude ~/Truecrypt_Volumes ${SOURCE} | gpg -e -r ${RECIPIENT} -o ${SAVEAS}
答案1
$5
这里有两个相关的技巧:您可以使用类似于数组切片的技巧( )开始获取参数"${@:5}"
,然后将参数列表构建--exclude
为数组,并使用"${array[@]}"
将它们包含在命令行中。
excludes=() # start with an empty array
for excl in "${@:5}"; do # for each extra argument...
excludes+=(--exclude "$excl") # add an exclude to the array
done
tar -cpJ "${excludes[@]}" "${SOURCE}" ...