シェルスクリプトのあれこれ

また書かないと忘れちゃうんだ。物忘れが激しいから。 今日はシェルスクリプトと向き合ったのでメモメモ。 記号ばかり出てくるから検索しづらいんですよねー。 こういうときはリファレンスを読むのが一番早いのかもしれないけど 良いサイトが見当たりません><

=2013/04/22ちょっと改定=

. /usr/local/bin/hoge.sh

「.」(ピリオド、ドット) そのシェルの実行。sourceと同義。だけど、挙動は微妙に異なるので注意が必要。 これが見つけづらくて面倒だった。 けど、シェルの実行程度ならつけなくても良かったんじゃないか、と改定時になって思う。

$@

「$@」(ドルアットマーク) 引数をすべて半角スペースで区切って表示する。 ので関数のあとに付けてあげれば、引数を別のシェルスクリプトに渡せる。たぶん。

while [ "$#" -gt 0 ]
do
    ...
done

「$#」(ドルシャープ) PHPで言うとcount($arg)みたいなものでコマンドラインから渡された引数の数を格納している。 で、whileは「引数の個数が0より大きければdoのなかを実行」。 -gtはGreater thenなので > の意味。 ということは当然、-ge(Greater Equal)や-lt(Less Than)や-le(Less Equal)や-eq(Equal)、-ne(Not Equal)もいます。

if [ -x /usr/local/bin/hoge.sh ]; then
  . /usr/local/bin/hoge.sh
fi

この-xはtestコマンドのオプションの-xのこと。ファイルが存在するかつ、実行可能かをテストしてる。 で、実行可能なら.で実行と。この-xは便利そうね。 他にも-r(存在かつ読込可)とか-w(存在かつ書込可)とか。 あと使いそうなのだと-d(ディレクトリが存在)と-f(ディレクトリを除く、ファイルがあれば)もありました。

とかとか。他にもあった気がするけど、とりあえずこれだけメモメモ。

あとここも参考になったのでメモメモ。 ステップ・バイ・ステップ・シェルスクリプト(5):シェルの変数に慣れる - @IT