${var:-foo} | 変数varが未定義の時fooを返す |
${var:=foo} | 変数varが未定義の時fooを代入する。 |
${var:+foo} | 変数varに値がセットされているときfooを返す |
${var:?puyo} | 変数varが未定義の時"puyo"を出力しexit 1する |
な感じで使えます(ノ゚⊿゚)ノ
${var:-foo} | 変数varが未定義の時fooを返す |
${var:=foo} | 変数varが未定義の時fooを代入する。 |
${var:+foo} | 変数varに値がセットされているときfooを返す |
${var:?puyo} | 変数varが未定義の時"puyo"を出力しexit 1する |
[[ $$ != `pgrep -fo "$0"` ]] echo "$0 is already running" && exit 2
[[ $$ != `pgrep -fo "$0"` ]] && [[ $PPID != `pgrep -fo "$0"` ]] && echo "$0 is already running" && exit 2
記述 | 動作 | 対応するsedコマンド例 |
---|---|---|
${変数名#*c} | 前方一致でのマッチ部分削除(最短マッチ) | sed "s/^.*?c//" |
${変数名##*c} | 前方一致でのマッチ部分削除(最長マッチ) | sed "s/^.*c//" |
${変数名%*c} | 後方一致でのマッチ部分削除(最短マッチ) | sed "s/.*?c$//" |
${変数名%%*c} | 後方一致でのマッチ部分削除(最長マッチ) | sed "s/.*c$//" |
${変数名/*c/def} | 文字列置換(最長マッチで最初にマッチしたもののみ) | sed "s/.*c/def/" |
${変数名//*c/def} | 文字列置換(最長マッチでマッチしたものすべて) | sed "s/.*c/def/g" |
$ cat test.sh #! /bin/bash ppid=$$ while( ps -p $ppid > /dev/null 2>&1 );do echo -n "." sleep 1 done & sleep 10 echo -e "\nfinish."
$ ./test.sh .......... finish.親プロセスが終了すると、バックグラウンドで実行していた.を出力する子プロセスも終了してますねヾ(*・∀・)ノ"
$ msg="a > b > c"これを表示してみると
$ echo $msg a b cといった具合に半角スペースに置換されてしまっている
$ echo "$msg" a b c