指定された変数にnull値がある場合、Dateコマンドはnull / nothingを出力します。

指定された変数にnull値がある場合、Dateコマンドはnull / nothingを出力します。

date指定された変数にno / null値がある場合、コマンドはどのように空白または内容のない内容を出力できますか?私は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}")

(sをecho除く)引数が渡されていない場合でも(実装を使用するか実装に依存しない限り)、常に1つ以上の改行を出力するので、次のことも必要です。cshecho-n\cecho

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

$bDay空の場合は何も出力されません。

関連情報