シェル変数
内部変数と環境変数が存在している。
内部変数は変数を定義したシェルのみ利用可能。
環境変数は子プロセスにも利用可能。
定義の仕方
内部変数は 変数名=値(文字列)で定義。setコマンドで設定した変数の一覧を表示させることが出来る。
環境変数は
すでに存在している変数を環境変数にする場合export 変数名
新しく環境変数を定義する場合export 変数名=値(文字列) で定義。
envコマンドで設定した変数の一覧を表示させることが出来る。
unset 変数名で設定した環境変数を解除することができる。
LANG
言語の確認、設定が行える。
打ち消し文字
変数 Y=zaq としたとき
| 文字 | 説明 | 実行例 | 結果 |
|---|---|---|---|
| \ | この文字に続く1文字の特別な意味を打ち消す。 | echo \\$Y$Y | $Yzaq |
| '' | 囲まれた文字列をそのまま取り出す。 | echo '\$Y\$Y' | \$Y\$Y |
| "" | 囲まれた文字列をそのまま取り出す。(ただし\、''、$は特殊記号として認識される) | echo "\$Y\$Y" | zaqzaq |
コマンド置換
'' ''で囲むと囲まれたコマンドを実行し、出力文字列に置換できる。
echo 'pwd'の実行結果はpwdではなく、現在のディレクトリ表示となる。
コマンド終了値
コマンド終了後に返される値のこと。
この値によってコマンドが成功したがどうかが分かる。
終了値 = 0コマンドは正常終了。終了値 != 0コマンドは正常終了していない
直前のコマンドの終了値はecho $?で確認できる。
シェルの環境設定ファイル
エイリアスやシェル変数はシェルを終了すると無効になってしまう。
しかし環境設定ファイルを作成しておくとシェルの起動時に自動で設定が反映される。
作成場所はユーザのホームディレクトリ下。ファイル名は複数あるがここでは1つだけ記載。
.bashrcこのファイルに保存するとシェルを起動するたびに実行が行われる。
コマンドサーチパス
頻繁に利用するコマンドをコマンド名だけで実行できるようにしたもの。
シェルスクリプト
1つ以上のコマンドで構成され、シェルによって解釈・実行される一連の処理を記述した手続きのこと。
シェルスクリプトが記述されているファイルをシェルスクリプトと呼ぶ。
繰り返し実行する処理など自動化、独自のコマンドを作成、入力ミスの削減等様々なメリットがある。
実行方法はbashコマンドやchmodコマンドから実行可能。
作成方法
作成するには3つの大まかなルールがある。
①1行目は #!'シェルの絶対パス' を書く シェバンと呼ばれている。
②実行したいコマンドを記述 1行に1つ それ以上記述するなら;で区切る。
③#記号から改行文字まではコメントが打てる。このコメントでファイルの内容を説明する。
位置パラメータ
シェルスクリプトの引数として与えられた文字列を格納する変数。
表示の具体例
実行する時にスクリプトファイル名 引数1 引数2 引数3と実行したとすると
スクリプト名 == \$0 引数1 == \$1 引数2== \$2 引数3 ==\$3と表すことが出来る。
またすべてを表示 == $*、\$0を除く位置パラメータの数 == \$#で表せる。
位置パラメータの変更
- 順送り
shift nコマンドを使用する。nは任意の数字で数字の分だけ左にシフト。
シフトされた文字は先に変数に保存しておく等をしないと参照できない。
- 再設定
set '文字列''文字列'のようにコマンドを入力すると入力した文字列が左から\$1、\$2となって設定できる。
制御用構文
通常コマンドは記述した順番に上から実行されていく。
しかし制御用構文を用いると、繰り返し同じコマンドの実行、条件によるコマンド実行が可能。
繰り返し構文
同じコマンドを繰り返し実行することが可能。
for文
複数の文字列に対して、同じコマンドを繰り返し、指定した回数分同じ処理を繰り返したい時に使用。
for 変数名 [in '文字列'、'文字列'、'文字列']
do
コマンドリスト
done
上記の様なコードを書くことによって実行可能。
変数名にinの中の文字列を左から順番に代入し、doとdoneの間にあるコマンドリストの内容を実行する。
for 変数名
do
コマンドリスト
done
in以降の文字列も省略可能。
この場合スクリプト実行時に引数を指定することで指定した引数の繰り返しが可能。
while文
コマンドの実行結果が真である間は、同じコマンドを繰り返し実行し、偽になった場合に終了する。
while コマンドリスト1
do
コマンドリスト2
done
上記の様なコードを書くことによって実行可能。
until文
コマンドの実行結果が偽である間は、同じコマンドを繰り返し実行し、真になった場合に終了する。
until コマンドリスト1
do
コマンドリスト2
done
上記の様なコードを書くことによって実行可能。
分岐構文
条件によって異なるコマンドの実行が可能。
if文
コマンドの実行結果によって、実行するコマンドを変える事が可能。
if コマンドリスト1
then コマンドリスト2
else コマンドリスト
fi
else行の省略可能。省略した場合偽の時に何も実行されなくなる。
if文の中にif文を書く多重分岐も可能。
↑の場合はelseifを使う。
case文
文字列とパターンを上から実行して、一致したパータンを実行。
case 文字列 in
パターン1) コマンドリスト1
;;
パターン2) コマンドリスト2
;;
パターン3) コマンドリスト3
;;
*)コマンドリストn ;;
esac
パターンには特殊文字が使用可能。
一致するパターンが無い場合、*をパターンに指定したコマンドリストを実行。
テストコマンド
与えられた条件式が成立する場合は真、不成立の場合は偽を返す。
testコマンドに条件式をつけて実行を行う。
(条件式が多すぎるのでここでは省略。使うときは調べた方が速そう。)
また論理演算子を用いて条件式を作る事も可能。