Cookbooks

スクリプティングのための応用的なコードスニペット集っぽいもの。 基本的な言語仕様についてはPOSIXシェルを参照。

See Also:

ユーザー入力を受け付ける

read を使う。

echo -n "Are you sure? (y/N) "
read answer
if [ "$answer" != "y" ]; then
  echo "Canceled."
  exit
fi

参考:

コマンドの出力結果にタイムスタンプをつける

do_something | while IFS= read -r line; do echo "$(date) $line"; done

参考:

OSの判別

参考:

絵文字を使う

  1. 絵文字のユニコードを探す
  2. U+1F3A3 だったら \U1F3A3 とする

4桁だったら小文字のuで、 \u2122 としてもいいっぽい。

絵文字を探すには http://www.fileformat.info/info/emoji/list.htm とか https://emojipedia.org/ を使うといい。

参考:

シェル関数が定義されているか調べる

コマンド同様に、 which function or command -v function で取れる。
test -v function ではNG.

数字を3桁ずつカンマ区切りで出力

See UNIX系コマンド#printf(1)

オプション解析

シェルスクリプトでコマンドラインオプションをどう解析するか。

参考:

sourceされたスクリプト内でファイル自身のパスを取得

Bash / Zsh両対応:

script_dir=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)

参考:

排他制御

スクリプトのポータビリティを保ちつつ、簡単に実現するなら、ロック取得コマンドとして次の2つのコマンドが使える:

  • mkdir $lock_dir
  • ln -s $$ $lock_file … 自身のプロセスIDでsymlinkを作成

自分では前者を使うことが多かったが、後者だとロック確保したプロセスを特定できるので、よりスマートだと思う。

参考: