サブディレクトリを含めてディレクトリの許可属性だけを変更する

スクリプト名: cdmod.sh
書式: cdmod.sh 許可属性指定 ディレクト
目的: ディレクトリのみ許可属性を変更する
戻り値: すべて成功:0 失敗:1 エラー:9

#!/bin/sh
. Error_Msg.sh && . Arg_Nums.sh && . Tmp_lock.sh && . Chk_File.sh || exit 9
Arg_Nums -eq 2 "$@" || exit 9

#一時ファイルの作成
Tmp_Lock -tm 1 || exit 9
trap "Tmp_Lock -tr 1; exit 9" 1 2 3 9 15

#ディレクトリリストの作成
Chk_File -drx "$2" || chmod $1 "$2" || exit 1
_DIR_LIST_NEW=$(find "$2" -type d 2>/dev/null | sort -r)
[ "$_DIR_LIST_NEW" = "" ] && \
{ Error_Msg "$0" "Could not create directory list."; exit 1; }

#新旧ディレクトリリストの比較
while [ "$_DIR_LIST" != "$_DIR_LIST_NEW" ]; do

    #ディレクトリリストを入れ替え
    _DIR_LIST="$_DIR_LIST_NEW"

    #ディレクトリの許可属性変更と戻り値のセット
    echo "$_DIR_LIST" | while read _DIR_NAME; do
        [ "$_DIR_NAME" = "" ] || chmod $1 "$_DIR_NAME"
        echo $_TMP_LOCK_FILE
        [ $? != 0 ] && echo 1 > $_TMP_LOCK_FILE
    done

    #ディレクトリリストを更新
    _DIR_LIST_NEW=$(find "$2" -type d 2>/dev/null | sort -r)
done

#戻り値の読み込み
_RETURN=$(cat $_TMP_LOCK_FILE)
Tmp_Lock -tr 1 || exit 9
exit $_RETURN