入力内容を読み取るスクリプトを作成したいと思います。たとえば、スクリプト名が "check" の場合、"check 9 4 1993" と入力すると、入力内容が cal コマンドとカレンダーチェックで有効な日付であることが確認されます。 )。
私の考えでは、calコマンドによる入力でエラーが発生した場合は有効な日付ではありません。私はこのドラフトにいくつかの深刻なエラーがあることを知っています(私の入力がcalコマンドを通過する方法を知りません)。しかし、いくつかのアドバイスをいただきありがとうございます。とにかくドラフトは次のとおりです。
#!/bin/bash
day=$1; month=$2; year=$3
day=$(echo "$day" | bc)
month=$(echo "$month" | bc)
year=$(echo "$year" | bc)
cal $day $ month $year 2> /dev/null
if [[$? -eq 0 ]]; then
echo "This is a valid date"
else
echo "This is an invalid date"
fi
ベストアンサー1
私が確認したいくつかのLinuxディストリビューション(Ubuntu 14.04など)では、パッケージングはcal
GNU CoreutilsではなくBSDで提供されています。 BSD版は日付を月と年だけで受け入れないようです。 Ubuntuバージョンには-H YYYY-MM-DDオプションがありますが、これは役に立たないようです。
代わりにこのユーティリティを使用しますdate
。 LinuxでGNU Coreutilsを想定すると、次のようにスクリプトを再構築します。
#!/bin/bash
day=$((10#$1))
month=$((10#$2))
year=$((10#$3))
if date -d $year-$month-$day > /dev/null 2>&1; then
# cal $month $year
echo "This is a valid date"
else
echo "This is an invalid date"
fi
メモ: