bash

Linux などで標準となっているコマンドシェル。ユーザーからの入力を受け付けて、実際にコマンドを起動する。

使い方


特殊変数


$1,...$9,${10}...個々のコマンドライン引数(位置パラメータ)
$#位置パラメータの個数
$@"$1" "$2"... の形式ですべての位置パラメータを展開
$*"$1 $2 ..." の形式ですべての位置パラメータを展開
$0シェル、もしくはシェルスクリプトの名前
$?最後に実行したコマンドの終了ステータス
$$現在のシェルのプロセス ID
$!最後に実行されたバックグラウンドプロセスのプロセス ID

変数展開のフィルタ


${variable:-word}
variable が未定義か null であれば word に置換される。そうでなければ variable が展開される。
${variable:=word}
variable が未定義か null であれば wordvariable に代入。代入があったか否かにかかわらず、 variable が展開される。
${variable:?word}
variable が未定義か null であれば word を標準エラー出力に表示。シェルスクリプトの処理中ならスクリプトを終了する。
${variable:+word}
variable が未定義か null であればなにも展開されない。それ以外なら word に置換される。
${variable:offset:length}
variableoffset 文字目から length 文字を展開する。 offset, length は算術展開が有効。 offset に負の値を指定すると、文字列の最後からの文字数になる。
${@:offset:length}
offset 番目から length 個の位置パラメータ(シェルスクリプトに渡されたコマンドライン引数)が展開される。
${variable[@]:offset:length}, ${variable[*]:offset:length}
配列 variableoffset 番目から length 個の要素を展開する。
${#variable}
variable の文字数(配列の場合は要素数)に置換される。
${variable#pattern}, ${variable##pattern}
variable の先頭が pattern に一致するなら、それを削除して展開。一致しなければ variable をそのまま展開。 # は最短一致、 ## は最長一致。
${variable%pattern}, ${variable%%pattern}
variable の先頭が pattern に一致するなら、それを削除して展開。一致しなければ variable をそのまま展開。 % は最短一致、 %% は最長一致。
${variable/pattern/string}, ${variable//pattern/string}
variable の中の最長一致で pattern にマッチする部分を string に置換して展開する。 / は最初のひとつを置換、 // はマッチするすべての部分を置換。

※最後の 3 つは、 variable が @, * もしくはそれらを添え字とする配列であったばあい、そのすべての要素に適用した結果を展開する。

制御構造


  • for variable [in word1 word2...;] do cmd; done
  • while cmd1; do cmd2; done
  • until cmd1; do cmd2; done
  • if cmd1; then cmd2; [elif cmd3; then cmd4;] fi
  • case word in pattern1 [ | pattern2...] ) cmd ;; ... [ * ) cmd ;;] esac
  • select variable [in word1 word2...;] do cmd; done

キーワード



参考


2007年03月19日(月) 11:54:26 Modified by sourcewalker




スマートフォン版で見る