シェルスクリプト の変更点

Last-modified:

シェルスクリプト(bash)のまとめ。色々と間違っている可能性あり

*サンプル [#ude2593d]
-カレントディレクトリのディレクトリ全てをtarで固める
 for file in `ls -1`; do tar cjf $file.tar.bz2 $file; done
-カレントディレクトリのファイルの空白を_に変換する
 for file in *; do mv "$file" `echo $file | tr ' ' '_'`; done
-カレントディレクトリのファイル名のAAAをBBBに置換する
 for f in *; do mv $f ${f/AAA/BBB}; done
-カレントディレクトリの連番数字ファイル名を0詰めにする(下記例は2桁)
 for f in *; do mv "$f" $(printf %02d ${f%.*}).${f##*.}; done

*言語仕様 [#a6ac5d4a]
**変数 [#d6415982]
-定義
-参照

-変数の値を変数名として値を参照する方法
 eval echo '$'$VAR

**特殊パラメータ [#d171a81f]
|パラメータ|内容|h
|$$|スクリプトのプロセスID|
|$#|スクリプトに渡された引数の数|
|$0|スクリプト名|
|$1,$2,,,|引数の要素|
|$*||
|$@||

**配列 [#u5095a2f]

**制御文 [#ia1d4ca3]
-if文
 if [ 条件1 ]; then
     条件1の処理内容
 elif [ 条件2 ]; then
     条件2の処理内容
 else
     その他のときの処理内容
 fi

-case文
 arg="lemon"
 case $arg in
 "apple")
 	echo "arg = apple"
 	;;
 "lemon")
 	echo "arg = lemon"
 	;;
 *)
 	echo "arg = other"
 	;;
 esac

-foreach文
 lists=("apple" "lemon")
 for value in ${lists[@]}; do
     echo $value
 done

-for文
 for ((i=0; $i<3; i++)); do
     echo $i
 done

-while文

-untile文

**数値と文字列 [#dc017323]
-数値演算
-文字列演算

**関数 [#f49d0905]
***定義方法 [#icd3b8ec]
-その1
 function 関数名()
 {
     処理内容
 }
-その2
 関数名()  ※functionは無くてもOK
 {
     処理内容
 }

***引数 [#l6f80603]
-引数の渡し方
 dummy_func()
 {
 	local arg1=$1
 	local arg2=$2
 	echo "$arg1 $arg2"
 }
 
 dummy_func "apple" "lemon"

***戻り値 [#h073846d]
-return文を使った戻り値の返し方
 dummy_func()
 {
 	return 1   ※0〜255まで
 }
 
 dummy_func 
 if [ $? = 0 ]; then
 	echo "return value = 0"
 else
 	echo "return value != 0"
 fi

-標準出力を使った戻り値の返し方
 dummy_func()
 {
 	local arg1="apple"
 	local arg2="lemon"
 	echo "$arg1 $arg2"
 }
 
 ret=`dummy_func`
 echo $ret

**デバッグ [#u81d75eb]
-デバッグ実行
 $ /bin/bash -x script.sh
-文法チェック
 $ /bin/bash -n script.sh