ファイルやディレクトリをさまざまな形式で圧縮する
スクリプト名: squeeze.sh
書式: squeeze.sh 圧縮形式拡張子 ファイル ...
目的: ファイルやディレクトリをさまざまな形式に圧縮する
戻り値: すべて成功:0 一部失敗:1 エラー:9
#!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_Nums -ge 2 "$@" || exit 9 Chk_File -dw "." || exit 9 _POSTFIX=$1; shift 1 _PWD=$PWD for _FILE in "$@"; do _FLAG= #ファイルの読み込みチェック Chk_File -r "$_FILE" || Chk_File -drx "$_FILE" || \ { Error_Msg "$0" "Could not read $_FILE."; _FLAG=failed; } #圧縮コマンドの決定とフラグ case $_POSTFIX in tar.gz ) _COMMAND="tar zcf" ;; tar.bz ) _COMMAND="tar jcf" ;; tar ) _COMMAND="tar cf" ;; lzh ) _COMMAND="lha c" ;; gz ) _COMMAND="gzip" ; _FLAG=over ;; bz2 ) _COMMAND="bzip2" ; _FLAG=over ;; zip ) _COMMAND="zip -r" ;; * ) Error_Msg "$0" "Unknown compression." _FLAG=failed ;; esac #圧縮作業 _FILENAME=$(basename "$_FILE") if [ "$_FLAG" = over ]; then $_COMMAND < "$_FILE" > "$_FILENAME.$_POSTFIX" elif [ "$_FLAG" = failed ]; then _RETURN=1 else cd "$(dirname "$_FILE")" $_COMMAND "$_PWD/$_FILENAME.$_POSTFIX" "$_FILENAME" 1>/dev/null cd "$_PWD" fi done exit $_RETURN