私はUnix環境でのプログラミングの初心者で、始めにいくつかの問題に直面しています。私はWindows上でPUTTYを使用しています。 ここに私のスクリプトやコードですが、私はそれを実行すると、それはそれはパイプラインか何かで正常に動作しないようですシェル:整数式の表現エラーが予想される
整数式が
#!/bin/bash
hour='date|cut-c12-13'
if [ $hour -ge 0 -a $hour -lt 12 ]; then
echo "good morn"
elif [ $hour -lt 18 ]; then
echo "good afternoon"
else
echo "good night"
fi
を期待していることを私に伝えます;それは '日付'を元の日付に変換するのではなく、それを単語として解釈します。
、「及び」として '-a'を使用してPOSIX仕様の現在のバージョンでは、明示的に陳腐化してマークされます。代わりにPOSIXに準拠したい場合は '[" $ hour "-ge 0] && [" $ hour "-lt 12]'を、そうでなければ '((hour> = 0 && hour <12))'最近の(はるかに読みやすい)bash固有の構文 –
... POSIXテストの仕様についてはhttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.htmlを参照してください。 '-a'と' -o'の隣の 'OB'フラグはそれらを陳腐化してマークし、' XSI'フラグはそれらをPOSIX標準の拡張子としてマークします(すべてのシステムがそれらをサポートする必要はありません) 。 –
(ああ、引用事項; '$ hour -ge 0]'と '' "$ hour" -ge 0] 'は同じではありません。後者は多くの一般的なケースでより良いエラーメッセージを可能にし、あなたは間違った結果を得ることができます。 –