問題:今日が木曜日であることを確認し、このケースの結果に基づいて他の作業を実行する必要があります。私は2つの異なるアプローチを試しました。
日付名を取得する:
DAYOFWEEK=$(date +"%a")
echo DAYOFWEEK: $DAYOFWEEK
if ["$DAYOFWEEK" == "Thu"];
then
echo YES
else
echo NO
fi
日数を取得します。
DAYOFWEEK=$(date +"%u")
echo DAYOFWEEK: $DAYOFWEEK
if ["$DAYOFWEEK" == 4];
then
echo YES
else
echo NO
fi
どちらの場合も「はい」でなければなりませんが、出力は「いいえ」です。何が問題なの?
ベストアンサー1
問題は、空白が不足していることです。
[
次のコードは、組み込みコマンドが==
エイリアスとして受け入れられるシェルで実行されます=
。
if [ "$DAYOFWEEK" == 4 ]; then echo YES; else echo NO; fi
しかし、覚えておいてください(参照help test
)bash
。
==
=
正式に言及されておらず、文字列比較に使用する必要があります。-eq
少数算術テストの場合(ここでは何の影響もありませんが、たとえば数値的には同じですが、語彙的には異なる場合を比較する場合にdate +%u
適用されます)。date +%d
04
4
私が好む:
if [ "${DAYOFWEEK}" -eq 4 ]; then echo YES; else echo NO; fi
通常、一日をもっと楽しむ必要があります。数字方法は電流への依存度が少ないためロケール。私のシステムでは、出力はdate +"%a"
TodayですDo
。