【发布时间】:2019-11-16 21:57:50
【问题描述】:
我正在尝试做这样的事情来制作脚本以在备份失败时执行备份。我将环境作为脚本的参数。
我不确定如何做的一件事是我想验证 $1 以仅包含一些预定义的值。预定义的值应该类似于 tst、prd、qa、rpt。任何人?
#!/bin/bash
ENVIRONMENT=$1
BACKUPDATE=$(date +"%d_%m_%Y")
BACKUPFILE="$ENVIRONMENT".backup."$BACKUPDATE".tar.gz
if [ $1 == "" ]
then
echo "No environment specified"
exit
elif [ -f "$BACKUPFILE" ]; then
echo "The file '$BACKUPFILE' exists."
else
echo "The file '$BACKUPFILE' in not found."
exec touch "$BACKUPFILE"
fi
【问题讨论】:
-
第一次测试的单行:
[[ -z "$1" ]] && echo "No environment specified" && exit 1。你不需要exec touch。touch一个人就够了。 -
@Matthieu 较短的单行:
: ${1:?No environment specified} -
@chepner 我知道周围有东西,谢谢! (另见stackoverflow.com/questions/8889302/…)
-
[ "$1" = "" ],或者只是[ -z "$1" ]。总是引用你的扩展,不要使用==; the POSIX specification fortest中没有标准化。
标签: bash