このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

bashのtips

  1. '<<<'によるヒアドキュメントのようなリダイレクトのようなヤツ
  2. readのオプション http://ss64.com/bash/read.html
  3. (()) $(()) による計算、C言語とほぼ同じ演算子と式構文が使える。
  4. bash特有の配列、変数インデックスに$が不要なのがいい。
  5. setのオプション http://ss64.com/bash/set.html
  6. local宣言とlocalのunset
  7. クォーティングによるグロブ展開の抑制
  8. $''
  9. $() は入れ子ができる。
  10. =~ と正規表現、二重ブラケット内では使える。caseではグロブ展開しか使えない。
  11. 正規表現マッチの結果は BASH_REMATCH にある。http://dqn.sakusakutto.jp/2013/06/bash_rematch_regexp.html
  12. declare使うと良いみたい: http://yonchu.hatenablog.com/entry/2013/07/09/230656 , http://ss64.com/bash/declare.html

bash配列について: fooが配列変数だとして、$foo(${foo}) とすると、配列の先頭要素が参照されてしまう。$foo ≡ ${foo[0]} 従って、${#foo} は配列の長さではなくて、最初の要素の文字列長さ。非常に混乱する。配列の長さは、${#foo[@]} 。つまりfooは、参照の観点からは配列の名前ではなくて、配列の最初の要素の別名となる。配列全体は ${foo[@]} で参照する。

  • $foo は、${foo[0]} のこと
  • ${foo[@]} は、foo全体のこと