GNU Bash

Bashとそれに関連するソフトウェアはとても多い。小さくまとめたいと思うのだけど…。

基本

ループ。

1 while true; do
2     echo hello;
3     echo world;
4 done

条件。

1 if true; then echo 'A'; fi

複合コマンド。

1 ( echo 'foo'; echo 'bar' ) | cat -n
2 
3 # 中括弧を使うと現在のコンテキストで実行される
4 { echo 'foo'; echo 'bar' } | cat -n

コプロセス

1 echo foo >&${COPROC[1]}
2 echo bar >&${COPROC[1]}
3 echo baz >&${COPROC[1]}
4 cat <&${COPROC[0]}

関数。

 1 f1 ()
 2 {
 3     # ローカル変数
 4     local x='hello'
 5     echo $x
 6 }
 7 
 8 
 9 x='world'
10 f1
11 echo $x

変数。

1 x='hello'

変数を削除。

1 unset -v x y

関数を削除。

1 unset -f f

コマンド置換。

1 echo $( ls )
2 
3 # または
4 
5 echo `ls`

プロセス置換。

1 cat -n <(ls -l)

シェル変数

HOME
ホームディレクトリ
PATH
シェルがコマンドを検索するディレクトリのリスト。コロンで区切る

.コマンドとsourceコマンド

.は現在のシェルコンテキストでコマンドを実行する。source.の別名である。