linux - 备份 bash 脚本的第一个参数

标签 linux bash

我编写了一个脚本来备份用户使用脚本输入的第一个参数:

#!/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. 备份文件夹是用户输入的第一个参数
  2. 将备份文件以日期时间格式保存到用户输入的文件夹中。

但是当我尝试输入参数时脚本没有运行。脚本有什么问题?

最佳答案

脚本的备份部分似乎运行良好,但检查 $1 不为空的部分则不然。

首先,您需要在 $1 周围加上引号,以防止它毫无用处。如果没有引号,shell 将其视为

if [ -eq 0 ]

并抛出错误。

其次,最好使用-z运算符来测试变量是否存在:

if [ -z "$1" ]

现在您的脚本应该按预期工作

关于linux - 备份 bash 脚本的第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399668/

相关文章:

git fetch - bash.exe : warning: could not find/tmp, 请创建

bash - 在 bash 脚本中将 x 放在变量之间(即 $foox$bar)

linux - WebDriver异常: no chrome binary at/usr/bin/google-chrome-stable or chrome binary not found

linux - shell 脚本 - 验证 sha256sum

bash - 访问 $?带有管道语句的变量?

bash - 获取 bash 脚本文件所在的目录

java - 我如何从 atom 启动 java 编码,以便它在终端中从 github 打开整个程序

linux - 找不到事件错误

c - 如何理解bitmap_set()?

c - 当无法执行管道时如何在 Linux 上创建自解压可执行文件