環境変数をチェックし、変数が設定されていない場合にログファイルに書き込むシェルスクリプトを書くにはどうすればよいですか?環境変数が設定されていない場合のログ記録方法は?
答えて
それが設定されていないときにのみ、その後、メッセージをしたい場合:
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. phpがsyslogにログするように設定されている場合、REQUEST_URI変数を記録します。
- 2. エンタープライズライブラリがログに記録されない
- 3. NLogがログに記録されない
- 4. IntelliTraceがログに記録されない
- 5. 環境変数が設定されている場所を見つける方法
- 6. ユーザがログに記録されている場合、別のメニューをエコーする
- 7. Azure Redis Cache遅いログにログが記録されない
- 8. の設定環境変数
- 9. 環境変数の設定
- 10. IISでログが記録されていない
- 11. 設定記号が環境に解決される方法/ * Rbが
- 12. rbenv:バージョン `2.2.3' がインストールされていません(RBENV_VERSION環境変数で設定)
- 13. LESS変数が設定されていない場合に設定してください
- 14. msbuild、環境変数の設定方法は?
- 15. Capistrano:グローバル環境変数の設定方法は?
- 16. ifort環境変数にエラーが設定されました
- 17. メイクファイルレシピで環境変数を設定する方法は?ここ
- 18. herokuでプロダクション環境変数を設定する方法は?
- 19. Visual Studio 2012で環境変数を設定する方法は?
- 20. Netbeansで環境変数を設定する方法は?
- 21. "TERM環境変数が設定されていません"を取り除く方法
- 22. __block変数が保持されないのはなぜですか(非ARC環境の場合)?
- 23. Linuxの場合:私は〜/ .profileファイルで設定した環境変数$ GOPATHを持っている別の環境変数
- 24. COR_PROFILER環境変数を設定して正しいプロファイラにリンクする方法
- 25. __version__変数が設定されていない場合、Pythonパッケージのバージョンを確認する方法
- 26. Matlab:定義されていない場合はInit変数
- 27. MAMPの環境変数を設定していますか?
- 28. 変数が渡されない場合の修正方法
- 29. 現在のcss環境を記録する方法は?
- 30. 変換が必要ない場合のMQGetOptionsの設定方法
スクリプト内から$ varをエコーすることができます。私はヌルなどのためのリターン文字列をチェックする。それは非常に扱いにくく、ハッキーに見える。 – xyz
[unix&linux](http://unix.stackexchange.com/q/22904/4667)でも尋ねられる –