※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

「bash」の編集履歴(バックアップ)一覧はこちら

bash」の最新版変更点

追加された行はこの色になります。

削除された行はこの色になります。

+-正規表現で文字列が含まれるのかを確認して、値を抜き出す
+BASH_REMACHという特別な変数を参照する
+ if [[ "asd1234567890_1234" =~ ([0-9]{5})([0-9]{5})_1234 ]];
+ then
+  echo ${BASH_REMATCH[0]};
+  echo ${BASH_REMATCH[1]};
+  echo ${BASH_REMATCH[2]};s
+ fi
 
+実行
+ $ bash a.sh
+ 1234567890_1234
+ 12345
+ 67890
+
+-関数の書き方
+
+ #!/bin/bash
+ 
+ if test `whoami` != 'root'; then
+  echo "rootユーザで起動してください。"
+  exit 1;
+ fi
+ 
+ echo "shellの引数1 = $1"
+ #戻り値設定用変数
+ rtn=""
+ func() {
+ echo "引数1 = $1"
+ echo "引数2 = $2"
+   # 関数内で戻り値設定用変数に戻り値を設定する
+   return 0
+ }
+ func "aaa" "bbb"
+ RET_CODE=$?
+ 
+ echo "戻り値=$RET_CODE"
+ if [ $RET_CODE -eq 0 ]
+ then
+   echo ok
+ else
+   echo ng
+ fi
+実行結果
+[root@localhost]# ./b.sh  123
+shellの引数1 = 123
+引数1 = aaa
+引数2 = bbb
+戻り値=0
+ok
+
+-デバッグ方法
+"-x"付きで起動する
+ bash -x デバッグするシェルスクリプト
+
+-ある程度まとまった引数をコマンドに渡す方法
+ mysql -u root -ppassword hogedb<<EOF
+  CREATE TABLE tbl_a AS SELECT * FROM tbl_b limit 1;
+  delete from tbl_a
+ EOF
+ RET_CODE=$?
+ if [[ ${RET_CODE} -ne 0 ]];then
+   echo "tbl_aの作成に失敗しました:$RET_CODE"
+   return 1
+ fi
+例は、テーブルをコピーしつつ、データを削除する方法
+EOFという文字列(先頭に空白を入れては駄目)が来るまで何行でも記載できる
+
+-ログに標準出力(1)と標準エラー(2)出力の両方をリダイレクトする
+ スクリプト > ログファイル名 2>&1
+
+-for分で指定回数だけまわす簡単な方法
+ $ for i in `yes |head -2`
+ do
+ 	echo $i
+ done
+実行結果は下記のとおり。$iは同じものが入ってしまうので、使えないが、head -nで指定したn回分だけまわしたい時は、これが一番単純かな?
+y
+y
+
+2014/10/22