我编写了一个脚本来备份用户使用脚本输入的第一个参数:
#!/bin/bash
file=$1/$(date +"_%Y-%m-%d").tar.gz
if [ $1 -eq 0 ]
then
echo "We need first argument to backup"
else
if [ ! -e "$file" ]; then
tar -zcvf $1/$(date +"_%Y-%m-%d").tar.gz $1
else
exit
fi
fi
我想要的脚本结果是
- 备份文件夹是用户输入的第一个参数
- 将备份文件以日期时间格式保存到用户输入的文件夹中。
但是当我尝试输入参数时脚本没有运行。脚本有什么问题?
最佳答案
脚本的备份部分似乎运行良好,但检查 $1
不为空的部分则不然。
首先,您需要在 $1
周围加上引号,以防止它毫无用处。如果没有引号,shell 将其视为
if [ -eq 0 ]
并抛出错误。
其次,最好使用-z
运算符来测试变量是否存在:
if [ -z "$1" ]
现在您的脚本应该按预期工作
关于linux - 备份 bash 脚本的第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399668/