早速、シェルスクリプトを作成してみましょう。ファイル名と、空白行を削除するかどうかのパラメータ(削除パラメータ)は、シェルスクリプトの引数で与えます。
今回のシェルスクリプト(default_set_view.sh)は、次のようになります。
1 2 3 4 5 6 |
#!/bin/sh case $1 in 0 ) sed "/^#/d" $2 ;; 1 ) grep -v "^#" $2 | grep -v "^$" ;; esac |
引数は「削除パラメータ ファイル名」の順に指定します。削除パラメータに「0」を与えると空白行を残し、「1」を与えると空白行を削除します。
それでは、1行ずつ見ていきましょう。1行目は前回説明した「シェバン」です。
3行目のパラメータの判定には「case」文を使いました。前回説明した「if」文では条件式が「真」か「偽」かによって処理を変えていましたが、case文では値によって処理を変更できます。
case文の基本書式は、次のようになります。
1 2 3 4 5 6 |
case 変数値 in 値1 ) 処理1 ;; 値2 ) 処理2 ;; 値3 ) 処理3 ;; (略) esac |
「変数値」が下に並べた「値1」「値2」「値3」に一致した場合、その後ろに指定した「処理1」「処理2」「処理3」を実行します。値と処理は必要な数だけ並べられます。実際のシェルスクリプトの変数値として指定している「$1」は、前回も利用した第1引数の値を呼び出すための特殊な変数です。