突っ走り書き

見せるほどのものでは..

シェルスクリプトから設定ファイルを読み込むときは . を使う

別ファイルに書いた変数定義は . (ドット)コマンドで読み込めるって話.
NAS をマウントするための自作スクリプト punch.sh を作ってます.
その中で,設定ファイル punch.conf を読み込むときに,load という関数を使って grep と cut で変数定義を切り出していました.

# punch.conf

FROM=//192.168.11.xx/nas
TO=$HOME/nas
USER=[user name]
PASSWORD=[password]

# punch.sh

readonly CONF_FILE="$HOME/.punch.conf"

load() {
    echo "`grep $1 $CONF_FILE | cut -d= -f2`"
}

readonly FROM="`load FROM`"
readonly TO="`load TO | sed -e "s|\\$HOME|$HOME|g"`"
readonly USER="`load USER`"
readonly PASSWORD="`load PASSWORD`"
readonly UID="`id -un`"
readonly GID="`id -gn`"

[ -d $TO ] || mkdir $TO

sudo mount \
    -t cifs $FROM $TO \
    -o username=$USER,password=$PASSWORD,uid=$UID,gid=$GID

これは,. コマンドによって次のようにスッキリ書けることを知りました.

readonly CONF_FILE="$HOME/.punch.conf"

. $CONF_FILE

[ -d $TO ] || mkdir $TO

sudo mount \
    -t cifs $FROM $TO \
    -o username=$USER,password=$PASSWORD,uid=$UID,gid=$GID