UNIX シェルスクリプト sh * bash

行き当たりばったりで使っていたので新しい発見が沢山。

  • リダイレクト
  • ヒアドキュメント
    • 行頭タブ無視: <<- EOF
    • ヒアドキュメント内で $ を文字とする: << \EOF または << 'EOF'
  • コマンドセパレータ (基本的に if で代用できるので使わない方がわかりやすい)
    • command_1 が正しく終了したら (終了コードが 0 だったら) command_2 を実行する: command_1 && command_2
    • command_1 がエラーの場合に command2_ を実行する: command_1 || command_2
  • 変数が空の場合の誤動作 test や set を防ぐために、変数を扱う場合は通常 "" で囲む。変数内に * や ? などのメタキャラクタが入っている場合には "" で囲むと ls などで期待した動作にならないことがある。
  • グルーピング
    • サブシェルでコマンドを実行する: (command_1; command_2; ...)
    • カレントシェルでコマンドを実行する最後のコマンドの後ろに ; を入れることと、{ の直後と } の直前にスペースを入れることが必要: { command_1; command_2: ...; }
  • 位置パラメータ
    • 引数全部: $*, $@
      • 引数全部を一つとして扱う: "$*"
      • 引数全部を個別に扱う: "$@"
  • test -n, test -z の代わりに test != "", test = "" を使う