woshidan's loose leaf

ぼんやり勉強しています

今日のbash

& ... コマンドをバックグラウンドで実行する

参考: http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230589

$ heavy_command&

case 文 ... 他の言語のswitch と同じ

参考: http://shellscript.sunone.me/case.html

  casein
    パターン1 ) 処理1;;
    パターン2 ) 処理2 ;;
    パターン3 ) 処理3 ;;
    …
    パターンn ) 処理n ;;

) の記法がマジでびびる。

getopts

参考: https://www.ibm.com/support/knowledgecenter/ja/ssw_aix_71/com.ibm.aix.cmds2/getopts.htm https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb

コマンド・ラインの引数を処理し、有効なオプションを検査する。

こないだrubyでちょいとしたスクリプト書いてる時に引数検査をARGVでeach回してぐるぐるしてたんですけど、 あったわ〜 シェルにあったわ〜 って感じです。

getopts OptionString Name [Argument...]

OptionString は、使用したいオプションの文字列。よくある例としては hhelp で使い方を出力する、といったもの。

: をつけるかどうかで振る舞いが変わり、 OptionString の後ろに : をつけると、そのオプションは引数を必要とするようになります。

指定していないオプションや引数を使った場合に

# https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb より引用
./test.sh: option requires an argument -- d
./test.sh: illegal option -- x

のようにエラー表示が出て終了しますが、 OptionString の全体の前に : をつけるとこのエラー表示は行われなくなり、自前でのエラー処理を行うことができます。

https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb の記事が非常に参考になり、 getopts のテンプレートなども紹介されているので今度便利コマンドを使う時は利用したいところです。

$! ... 最後に実行されたバックグラウンドコマンドのプロセスIDに展開

参考: https://qiita.com/laikuaut/items/1daa06900ad045d119b4

ちなみに現在動かしている(バックグラウンドでない)シェルのプロセス番号は $ で展開される。

$ echo $$
521