date
当提供的变量没有/空值时,命令如何输出空/无内容。我知道if else
声明可以做到这一点,但我认为这不是正确的方法。是否有合适的命令或命令的更改来date
执行此操作?
例如
myDay=""
bDay=`date -d "$myDay"`
echo "$bDay" // this should have no output
答案1
你可以这样做:
bDay=${myDay:+$(date -d "$myday")}
或者:
if [ -n "$myDay" ]; then
bDay=$(date -d "$myDay")
else
bDay=
fi
或者:
bDay=$([ -z "$myDay" ] || date -d "$myDay")
或(如果为空则显示错误消息$myDay
):
bDay=$(date -d "${myDay:?no date supplied}")
请注意,echo
(除了csh
s echo
)始终输出至少一个换行符(除非您使用-n
或\c
取决于echo
实现),即使没有传递任何参数,因此您还需要:
[ -z "$bDay" ] || echo "$bDay"
$bDay
当为空时不输出任何内容。