概要
何かをdeployするときとか、新しいスクリプトを動かすときとかに、設定ファイルや特定のdirectoryに依存しているということはよくある。それらを動かす前に一度fileやdirectoryがあるかを確認して、なければdirectoryを作成する、というような事前準備のスクリプトをよく作る。
スクリプト
#!/bin/bash
CHECK_SUCCESS=0
confirm_mkdir()
{
while read -p "Do you mkdir? [y/n] " ANS ; do
case $ANS in
[Yy]* )
echo "mkdir -p ${CHECKED_DIRS[$n]}"
mkdir -p ${CHECKED_DIRS[$n]}
return 0
;;
[Nn]* )
echo "Not to mkdir."
return 1
;;
* )
echo "Please, answer yes or no."
;;
esac
done
}
check_dir()
{
n=${#CHECKED_DIRS[@]}
n=$((n-1))
while [ $n -ge 0 ] ;
do
if [ -d ${CHECKED_DIRS[$n]} ] ; then
echo "Existing ${CHECKED_DIRS[$n]}"
else
echo "There is no ${CHECKED_DIRS[$n]}"
confirm_mkdir
CHECK_SUCCESS=1
fi
n=$((n-1))
done
}
check_files()
{
n=${#CHECKED_FILES[@]}
n=$((n-1))
while [ $n -ge 0 ] ;
do
if [ -f ${CHECKED_FILES[$n]} ] ; then
echo "Existing ${CHECKED_FILES[$n]}"
else
echo "!!!!!!! There is no ${CHECKED_FILES[$n]} !!!!!!!"
CHECK_SUCCESS=1
fi
n=$((n-1))
done
}
check_success()
{
if [ $CHECK_SUCCESS -eq 0 ] ; then
echo "SUCCESS!! prepared to use."
else
echo "NOT SUCCESS. Please, fix for mistakes and retry it."
fi
}
CHECKED_DIRS=( $APP_ROOT_DIR $CONFIG_ROOT_DIR $SCRIPT_OUTPUT_DIR $LOG_DIR)
CHECKED_FILES=( $APPLOG $STOP_APP $START_APP $CONFIG_FILE )
check_dir
check_files
check_success
使い方
環境変数でpathを設定して、CHECKED_DIRS
にdirectory、CHECKED_FILES
にfileを並べるだけ