我需要创建一个 .sh 脚本,这对我来说是新事物。我有一些例子可以借鉴,但我希望做得更好。
我看到这样的事情:
date -d $date | grep "Fri"
$status=$?
if [ ${status} == 0 ]; then
是否可以将此片段折叠成一行以达到此效果?
if [ date -d $date | grep "Fri" = 0 ]; then
我删除了双“=”,因为我知道它是多余的。
答案1
直接测试管道中最后一个命令的退出状态即可,
if date -d "$date" | grep -F "Fri"
then
…
fi
我已将变量用双引号引起来,$date
以防止 shell 无意中对它进行 split/glob 操作。我已经使用了grep -F
不使用正则表达式的直接字符串匹配。
但是,您也可以通过要求告诉您星期几来直接以与语言环境无关的方式编写此特定示例,而grep
根本不需要:date
if [ "$(date -d "$date" +'%w')" -eq 5 ]
then
…
fi