LoginSignup
3
3

More than 5 years have passed since last update.

スクリプトなどの事前準備としてdirectoryとfileなどをがあるかどうかを確認するスクリプト

Last updated at Posted at 2015-08-06

概要

何かを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を並べるだけ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3