bashメモ
What is bash
メモ
前提
Linuxコマンドを複数組み合わせて同時に実行する、というのがbashスクリプトの基本的な考え方。 なのでbashスクリプトの構成要素であるコマンドの解説もこのページで兼ねることにする。
指定した条件に合致するファイルの有無を判定する
testコマンドを利用する。 [ ]もtest同様の働きをする。ワンショットで確認する際はtestコマンド、シェルスクリプト内で条件分岐をしたい場合は[ ]を使うとよい。
コマンドの失敗を検知して別のコマンドを実行する
command1 || command2
command1が終了ステータス0以外の時にcommand2が実行される。
ログイン中のユーザのホームディレクトリを出力する
echo $HOME
任意のディレクトリにパスを通す
カレントディレクトリにパスを通す(自分がいるディレクトリの実行可能ファイルは常に検索可能にする)なら以下
export PATH=$PATH:.
※補足 PATHは以下のようになっている。コロン区切りで実行可能ファイルを配備しているディレクトリが指定されてるので、末尾に:.を書き足している
root@test:~# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
配列
#!/bin/bash # create array arr=(hoge fuga bar) # show specified index echo ${arr[2]} # all echo ${arr[*]} echo ${arr[@]} # add single arr+=("one") echo ${arr[@]} # add multiple arr+=("two" "three") echo ${arr[*]} # delete single unset arr[2] echo ${arr[@]} # delete multiple # nothing # delete all unset arr echo ${arr[*]}
※補足
全要素アクセス時の@と*の違いについては以下を参照。 ダブルクォートで配列を囲った時に違いが出てくる。
「*」の場合は一回でループが終了しています。ダブルクォートで括った配列のインデックスを「*」で指定すると配列全体の一つの値として展開されてしまうからです。「@」の場合は個々の要素がダブルクォートで括られた状態で展開してくれます。