■実装するプログラムの概要
実行時に指定した引数を基に、tar.gz形式またはzip形式で同階層に配置しているworkディレクトリを圧縮する。
※階層構造については、後述の「■ディレクトリ構造」参照。
■フローチャート
■プログラム仕様
インプット | 処理内容 | アウトプット |
---|---|---|
– | 実行ファイル名を変数にセットする。 | – |
第1引数 | 実行時の第1引数を変数にセットする。 | – |
【ディレクトリ】 work | 【条件分岐】 実行時の第1引数について、 0の場合: tar.gz形式でディレクトリを圧縮する。 1の場合: zip形式でディレクトリを圧縮する。 0、1以外の場合: エラーメッセージを出力する。 | 【圧縮ファイル】 sample.tar.gz sample.zip 【メッセージ】 エラーメッセージ |
■ディレクトリ構造
赤字の「sample.tar.gz」および「sample.zip」は実行モジュール「sample.sh」を実行した後に作成される。
■サンプルコード
#!/bin/bash
# 実行ファイル名をセット(パスは削除)
readonly MODULE_NAME=${0##*/}
# 第1引数を変数にセット
compression_flg=$1
# 圧縮フラグ判定処理
# 0:tar.gz形式に圧縮
# 1:zip形式に圧縮
# 0、1以外:エラーメッセージ出力
case "$compression_flg" in
"0")
printf '%s\n' "${MODULE_NAME}:tar.gz形式で圧縮します。"
tar -zcvf sample.tar.gz ./work
;;
"1")
printf '%s\n' "${MODULE_NAME}:zip形式で圧縮します。"
zip -r sample.zip ./work
;;
*)
printf '%s\n' "${MODULE_NAME}:引数は0か1を指定してください。"
printf '%s\n' "指定した引数:${compression_flg}"
;;
esac
■実行結果
・tar.gz形式で圧縮
$ ./sample.sh 0
sample.sh:tar.gz形式で圧縮します。
a ./work
a ./work/samplefile1.txt
a ./work/samplefile2.txt
a ./work/samplefile3.txt
・zip形式で圧縮
$ ./sample.sh 1
sample.sh:zip形式で圧縮します。
adding: work/ (stored 0%)
adding: work/samplefile1.txt (stored 0%)
adding: work/samplefile2.txt (stored 0%)
adding: work/samplefile3.txt (stored 0%)
・エラーメッセージ出力(実行時の第1引数:0、1以外)
$ ./sample.sh 3
sample.sh:引数は0か1を指定してください。
指定した引数:3