当提供的变量具有空值时,日期命令输出 null/nothing

当提供的变量具有空值时,日期命令输出 null/nothing

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(除了cshs echo)始终输出至少一个换行符(除非您使用-n\c取决于echo实现),即使没有传递任何参数,因此您还需要:

[ -z "$bDay" ] || echo "$bDay"

$bDay当为空时不输出任何内容。

相关内容