シェルスクリプトでエラー値取得
Linuxをつかいシェルスクリプトを組んでいます
複数ファイルの存在有無を確認し、問題なければ、
ファイルを作成する処理を作成したいと思っています。
現在つまずいているのが以下の2点です。
(1)複数ファイルが無い場合、エラーとしたいが、「too many arguments」とででしまう。
(2)HASH.tmp情報取得中にエラーとなったらエラーを出したいが、エラー終了ステータス返却処理に流れない。
初めてで色々しらべながらやっていますが、うまくいかず止まってしまいました。
どなたかご助言お願い致します。
(1)
#==============================================================================#
# データ抽出用sqlファイル存在確認
# CSVファイルが無かったらエラーを出したい。
# 終了ステータス返却
# 終了ステータスが"0"以外の場合は、"1"を返却する
#==============================================================================#
if [ ! -f "${DATA_DIR}/"*.csv ]; then
# ログ出力
OUT_MSG_LOG -E "抽出ファイルが存在しません。"
OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :1"
OUT_ACT_LOG SH 12 ""
OUT_ACT_LOG SH 02 ""
exit 1
fi
(2)
#==============================================================================#
# ハッシュ情報取得処理
#==============================================================================#
mktemp ${DATA_DIR}/HASH.tmp >/dev/null
for arg in *.csv
do
md5sum ${arg} | awk '{printf("%s,%s\n",$2,$1)}' >> HASH.tmp
done
#==============================================================================#
# 終了ステータス取得
#==============================================================================#
RS=$?
#==============================================================================#
# エラー終了ステータス返却
# 終了ステータスが"0"以外の場合は、"1"を返却する
#==============================================================================#
if [ ${RS} -ne 0 ]; then
# ログ出力
OUT_MSG_LOG -E "抽出処理実行中にエラーが発生しました。"
OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :${RS}"
OUT_ACT_LOG SH 12 ""
OUT_ACT_LOG SH 02 ""
exit 1
fi
お礼
早速の回答、ありがとうございます。 論理否定の例がみつからず、 if ![ -e /tmp/test.txt ]; then のように書いてしまっていました。 これでOKです。 更にネットで調べて何も処理しない場合は「:」だけで良いということも分かりました。