变量作为bash脚本中的命令
发布时间:2020-12-15 18:49:53 所属栏目:安全 来源:网络整理
导读:我正在编写一个非常简单的bash脚本,它可以对给定的目录进行加密,加密其输出,然后将生成的文件分解成多个较小的文件,因为备份介质不支持巨大的文件. 我没有很多bash脚本的经验.我相信我有正确引用我的变量的问题,以允许参数中的空格.脚本如下: #! /bin/bash#
我正在编写一个非常简单的bash脚本,它可以对给定的目录进行加密,加密其输出,然后将生成的文件分解成多个较小的文件,因为备份介质不支持巨大的文件.
我没有很多bash脚本的经验.我相信我有正确引用我的变量的问题,以允许参数中的空格.脚本如下: #! /bin/bash # This script tars the given directory,encrypts it,and transfers # it to the given directory (likely a USB key). if [ $# -ne 2 ] then echo "Usage: `basename $0` DIRECTORY BACKUP_DIRECTORY" exit 1 fi DIRECTORY=$1 BACKUP_DIRECTORY=$2 BACKUP_FILE="$BACKUP_DIRECTORY/`date +%Y-%m-%dT%H-%M-%S.backup`" TAR_CMD="tar cv $DIRECTORY" SPLIT_CMD="split -b 1024m - "$BACKUP_FILE"" ENCRYPT_CMD='openssl des3 -salt' echo "$TAR_CMD | $ENCRYPT_CMD | $SPLIT_CMD" $TAR_CMD | $ENCRYPT_CMD | $SPLIT_CMD say "Done backing up" 运行此命令失败:
我可以通过删除$BACKUP_FILE周围的引号来修复它,其中我设置$SPLIT_CMD.但是,如果我的备份目录的名称空间不起作用.另外,如果我将“echo”命令的输出直接复制并粘贴到终端,那么工作正常.显然,我不了解Bash如何逃避事情.
简单的说,不要把整个命令放在变量中.尝试恢复引用的参数时会遇到很多麻烦.
也: >避免在脚本中使用全资本变量名.轻松的方式来拍摄自己的脚. #! /bin/bash if [ $# -ne 2 ] then echo "Usage: $(basename $0) DIRECTORY BACKUP_DIRECTORY" exit 1 fi directory=$1 backup_directory=$2 current_date=$(date +%Y-%m-%dT%H-%M-%S) backup_file="${backup_directory}/${current_date}.backup" tar cv "$directory" | openssl des3 -salt | split -b 1024m - "$backup_file" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- active-directory – 保护OpenLDAP和AD
- angular – 外部javascript库在'{module} /
- 如何编写类似gvim-help-doc的文本文件?
- angularjs – 我如何迭代的键,ng-repeat中的值的
- openldap – LDAP userPassword加密?
- Docker无法在Windows 10上运行错误:必须在BIOS中
- scala – 如何找到数组中最常见的元素?
- Angular ngIf firebase身份验证指令使DOM无响应
- 如何用AngularJS动画一个div高度变化
- angularjs – 在ui-router中动态构造的ui-sref属
热点阅读