シェルスクリプト制御構造など
【目次】
シェルスクリプト制御構造
for文
リストに対して繰り返し処理を行う。
リストの各要素の値が変数名で参照できる。
for <変数名> in <リスト> do <処理> done
このリストの部分には、
- パス名展開(
*.sh
みたいなの)も利用可能。 $@
を指定すると、全コマンドライン引数が対象になる。
(in <リスト>
箇所を省略すると、これが対象と見なされる)- コマンド置換も利用可能。
# 数値列を出力するseq seq <開始値> <終了値>
for文で「seq」を用いると、連番に対して順に処理が行える。
# 例 for i in $(seq 1 6)
参考:新しいLinuxの教科書(299~303)
while文
指定した条件が真である限り繰り返し処理を続ける。
コマンドの終了ステータスが0であれば真。
while <コマンド> do <処理> done
計算式を扱う場合
算術式展開$(( ))
を利用する。
中に書いた文字列は計算式として見なされる。
参考:新しいLinuxの教科書(305~306)
case文
文字列によって処理を分岐する。
case <文字列> in <パターン1> ) <処理> ;; <パターン2> ) <処理> ;; esac
ワイルドカードなど使って書くときは、パターンの中に「何にもマッチしなかった時」の処理も書くこと。
また|
で複数のパターンも指定可能。
A | B )だった場合、AまたはBがマッチすればよい。
参考:新しいLinuxの教科書(303~305)
シェル関数
シェルスクリプトの中で使われる関数のこと。
何度も同じ処理をする時などに、処理をまとめておける。
<関数名> () { <処理> }
終了ステータスを明示的に示したい場合は
return <終了ステータス>
参考:新しいLinuxの教科書(307~310)
フィルター
標準入力を入力として受け取り、出力するコマンドのこと。
head
ファイルの頭から10行目までを出力するコマンド。
行数の指定も可能。
$ head <ファイル名> $ history | head # コマンド履歴を10行目まで表示
DoS攻撃について
サーバーに対して多大な要求(トラフィック)をだし、正常な動作をさせなくする(返答が遅くなる。エラーを出す)こと。
参考:33.ハッキングあたーっく!lwp-requestで情報を要求!/dev/nullはブラックホール