bash保育園にいた頃 $()
とか${}
とかでてきて混乱しました。
メモです。多分全てではありません。
複数のコマンド(の出力)をまとめる
$ {
echo hello;
echo world;
} > hoge.txt
こんなの
$ echo hello{1,2,3}
hello1 hello2 hello3
他にも色々ある。変数展開だけでgist一つ書けそう
$ echo ${VAL}
$ pwd; (cd hoge); pwd
/home/shell
/home/shell
$ arr = ("a", "b" , "c")
コマンド置換。 サブシェルの標準出力を値として得る
$ HELLO=$(echo "$(echo hello) $(echo world)")
おまけ
VAR=$(<file)
: file を変数に
プロセス置換。 サブシェルの標準入力・標準出力をファイルとして扱う
$ diff <(findとか) <(grepとか)
算術計算を行う
$ echo $((3.14 * 4))
12.56
- testコマンドのシンタックスシュガー
- [[]] は昨日拡張されたver
- 式のグループ化
()
- 論理積
&&
論理和||
- 論理否定
!
- 文字列比較
==
!=
- 正規表現マッチ
~=
- 式のグループ化