環境変数をチェックし、変数が設定されていない場合にログファイルに書き込むシェルスクリプトを書くにはどうすればよいですか?環境変数が設定されていない場合のログ記録方法は?
答えて
それが設定されていないときにのみ、その後、メッセージをしたい場合:
if [ -z "${CHOSEN_ENV_VAR}" ]
then echo "CHOSEN_ENV_VAR was not set but should have been" >> log.file
fi
あなたは、単にスクリプトが停止し、標準エラー出力に報告したい場合は、:
: ${CHOSEN_ENV_VAR:?'was not set but should have been'}
(あなたがテストすることができます対話シェルは終了しませんが、対話シェルは終了しません。スクリプトに入れてスクリプトを終了してください)
私は彼が省略すべきだと思う2番目の例の(2番目の) ':'のように、 ':? 'は変数の設定を解除するだけでなく、NULL変数をチェックします。コロン・テストを省略すると、設定されていない場合のみテストされます。 (最初の例と同じ問題があり、空でないかどうかを確認するだけです) – flolo
はい - これまでは空のenv varを必要としていたことはほとんどありませんでした。それは通常、問題を示しています。 '[-n" $ {CHOSEN_ENV_VAR + X} "]'でトリックを実行して、未設定の環境変数を検出することもできます。この表記法は、CHOSEN_ENV_VARが設定されていない場合はXを生成します。 –
ログに書き込むコマンドはlogger
です。 そして、あなた変数がtest -v
に設定されている場合は、あなたのスクリプトで使用すると、ライン持っている必要がありますので、テスト:
if test ! -v VARNAME; then logger Variable VARNAME is unset; fi
EDIT:ケースでログにちょうど任意のログファイルではなく、システムログを意味し、もちろん、ロガーをecho bla bla> log.fileに置き換えることもできます。
[ -z "$name" ]
は、name
が空であるかどうかを確認します。設定されていないかどうかをテストするには、[ -z "${name+isset}" ]
を使用します。
check() {
if [ -z "${name+isset}" ]; then
echo "name is unset"
elif [ -z "$name" ]; then
echo "name is empty"
else
echo "name is non-empty"
fi
}
name=me; check name
name=; check name
unset name; check name
- 1. 複数の環境変数が設定されている場合、Travis-CI allow_failures
- 2. エラー:「環境変数ExtensionSdkDirが設定されていない」
- 3. phpがsyslogにログするように設定されている場合、REQUEST_URI変数を記録します。
- 4. webjobsのログ記録場所を設定してください
- 5. バッチファイルを使用して環境変数を設定していない場合
- 6. Eclipse環境設定でクラスパス変数が保存されない
- 7. 環境変数がcronタスクに設定されない
- 8. Java統合テストの実行時に環境変数が設定されない
- 9. eclipse "TERM環境変数が設定されていません"
- 10. AWS ECS環境変数が設定されていません
- 11. ASP.NETコア環境変数が設定されていません
- 12. Rails環境変数がHerokuのプロダクションで設定されていない
- 13. Prestashop 1.6.1.11ユーザーがログに記録していない場合(これは)
- 14. NLogがログに記録されない
- 15. IntelliTraceがログに記録されない
- 16. エンタープライズライブラリがログに記録されない
- 17. ユーザーがログに記録されている場合は、ボタンを変更してください
- 18. 環境設定を変更した場合のColorPrimaryの変更方法は?
- 19. 環境変数が設定されている場所を見つける方法
- 20. 変数が設定されていない場合、変数が設定されるのを待ちます
- 21. ユーザがログに記録されている場合、別のメニューをエコーする
- 22. PyCharm:Python用のリモートデバッグ環境を介して設定されている場合RemoteDebugServer
- 23. Azure Redis Cache遅いログにログが記録されない
- 24. GGTS - ワークスペース環境設定でGrailsがインストールされていない
- 25. の設定環境変数
- 26. 環境変数の設定
- 27. コールバック関数の出力がログに記録されない(JavaScript)
- 28. GCPの環境変数を設定してください
- 29. IISでログが記録されていない
- 30. log4netのは、ファイルまたはコンソール(外部log4net.configファイル)をログに記録するログ記録されていない
スクリプト内から$ varをエコーすることができます。私はヌルなどのためのリターン文字列をチェックする。それは非常に扱いにくく、ハッキーに見える。 – xyz
[unix&linux](http://unix.stackexchange.com/q/22904/4667)でも尋ねられる –