Chiroru's Diary

日々の学びをちょこちょこメモしていきます

シェルスクリプト制御構造など

【目次】

シェルスクリプト制御構造

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)

フィルター

標準入力を入力として受け取り、出力するコマンドのこと。

ファイルの頭から10行目までを出力するコマンド。
行数の指定も可能。

$ head <ファイル名>  

$ history | head  
# コマンド履歴を10行目まで表示 

DoS攻撃について

サーバーに対して多大な要求(トラフィック)をだし、正常な動作をさせなくする(返答が遅くなる。エラーを出す)こと。
参考:33.ハッキングあたーっく!lwp-requestで情報を要求!/dev/nullはブラックホール