Shell Script/機能・tips
起動してスクリプトを読み込むインタプリタを指定する。
全てのUNIXに存在するBourne Shellを指定するのが無難。
#!/bin/sh
# コメントはハッシュ文字#から行の終わりまで
# 複数行のコメントを表すものはない
;(セミコロン)で区切ると、複数のコマンドを連続して実行できる。(改行が入力されたのと同じ扱いとなる)
cd /work; pwd
コマンドは改行すると実行されるが、コマンドが長くなると読みにくくなってしまう。
改行を無視するには、バックスラッシュ(円マーク)を行末に置く。
$ echo Hello \
> World.
Hello World.
: > file
echo -n > file
cp /dev/null file
cat /deb/null > file
コマンドのマニュアルはmanコマンドで見る
定数は大文字、定数以外の変数は小文字、変数名はスネークケースを推奨。関数内変数は先頭に_を付ける。
標準出力と標準エラーの両方をファイルに出力する
cat abc xxx > nnn 2>&1
エラーメッセージをエラーとして出す
echo "Error messages." 1>&2
複数のコマンドをまとめてリダイレクト
{
echo "hoge"
echo "fuga"
} >>logfile.log
ヒアドキュメント
cat << END
text
text
END
$ file=/foo/bar/baz.txt
$ basename $file # baz.txt
$ dirname $file # /foo/bar
$ echo ${file%.*} # /foo/bar/baz
$ echo ${file##*.} # txt ※拡張子がない場合は変換が行われないので注意
◆変数の文字数を取得する。空白も1文字、改行コードは含めない。
$ hoge=hoge-value
$ echo ${#hoge} # 10