bashの組み込みコマンドとしては以下のようなものがあります。
: | 常に真を返すコマンド |
. | '. filename'という形で使い、現在のシェルのプロセスを使って指定されたファイルを読み込み実行する。 |
break | for,whileのループから抜け出す。ループがネスとしている場合には引き数に抜けるループの数を指定できる |
cd | 指定したディレクトリに移動する |
continue | for,whileの中で次の繰り返しに移行する |
echo | 引数を標準出力に表示 |
eval | 変数の置換やコマンドの置換、ワイルドカードの置換などを一行のコマンドでまとめて展開させる |
exec | 新しいプロセスを作らず現行シェルのプロセスと置き換えて引数を実行させる。 |
exit | シェルを終了する。引数に数字を指定することで変数$?に返り値を与える |
export | 引数に指定した変数を他のコマンドやシェルからも利用できるようになる。 |
pwd | カレントディレクトリの完全パスを表示する |
dirname | 引数に指定したファイルのディレクトリを取得する。"dirname $0"のようにすれば実行中のシェルスクリプトのディレクトリを取得できる。 |
readonly | 引数で指定した変数をリードオンリーに変える |
return | シェル関数から抜けるコマンド。引数に指定した番号がその関数の終了コードになる |
set | シェルのオプションをオンにしたりオフいしたりする。 |
shift | 位置パラメタの位置を左にずらす。引数に数字を指定したときは、その数字の分だけ位置をずらす |
test | ある条件を判定し、その結果によって真(0)か偽(0以外)を返す。if,whileとともに使うことが多い。 |
trap | 'trap action signal'の形式で、signalに指定したシグナルを受け取ったときにどういう処理をするかをactionに指定する。 |
type | 引数に指定したコマンドが、組込みコマンドかどうか、コマンド本体の場所はどこかなどの情報を与える |
umask | ファイルを生成するときにどのモード(rwx)で作るかを指定する。 |
unset | 引数で指定した変数や関数を消去する。シェルがはじめから持っている変数(PATHやHOMEなど)はunsetできない |
wait | 引数にプロセスIDを指定し、そのコマンドが終了するまで待つ。 |
let | 引数を算術式として評価する |
read | 標準入力から1行読み込み、変数IFSの中にある文字(デフォは空白、タブ、改行)で区切って引数に指定した変数に代入する。次のようなオプションが使える。 ・-t {time}:入力の確定をtime秒だけ待つ ・-p {prompt}:入力を促すプロンプト文字列promptを表示してから入力を受ける ・-n {nchars}:入力がncharsに達した時点で行末まで読み込まずに処理を終了する ・-r:入力にあるバックスラッシュを特別な文字列とみなさない。 |
readの使用例
例:画面からYes/Noを入力し、結果を表示する #!/bin/bash prompt="Please input Yes/No>" ans="" while : ; do line="" read -t 10 -n 3 -p ""${prompt}"" line case "$line" in "") ans=yes break ;; Y|y|[Yy]es|YES) ans=yes break ;; N|n|[Nn]o|NO) ans=no break ;; esac echo echo "Invalid input" done echo echo "The result is \"${ans}\"."
trapの使用例
例1:処理が中断されたときに/tmp以下に作成させたプロセスIDのついた一時ファイルを消してから終了 trap 'rm -f /tmp/*.$$; exit1' 1 2 3 15 例2:シグナルを受け取っても無視する trap '' 1 2 3 15 例3:シグナルを受け取ったときに、そのシグナル本来の意味のままに動作する trap 1 2 3 15
letの使用例
例:letを使ったwhileループ(0~4のループ) i=-1 while let "++i < 5";do echo $i done