- 正規表現で文字列が含まれるのかを確認して、値を抜き出す
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 i in `yes |head -2`
do
echo $i
done
実行結果は下記のとおり。$iは同じものが入ってしまうので、使えないが、head -nで指定したn回分だけまわしたい時は、これが一番単純かな?
y
y
2014/10/22
最終更新:2016年04月14日 18:29