Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2863

bashおよびスクリプト

$
0
0

こんにちわ! 現在LinuC102学習中の@darry6335です。
今日はシェルスクリプトに関して学習しました。


1.bashとは?

bashとはBourne Again Shellを略した名前で、シェルの一種である。コマンド言語でシェルスクリプトの作成が可能で、大抵のLinuxディストリビューションに標準で入っている。他のシェルとしては、tcsh,zshなどがある。

2.入力規則

1行目の宣言は、"#!/bin/bash"と記述する。(SHELLの実行ファイルのPATH)
スクリプトを解釈するシェルを指定。(シバンorシェバン)
シバンを記述しないと、bash機能は使用できない。
シバンを指定していないスクリプトに関しては、実行権限のあるユーザ、ないユーザで動作が異なる。

3.コメントアウト

行頭に#を付けることで、スクリプトを無効化し、コメントと解釈される。

4.変数

変数の宣言は、英数字かアンダーバーを用いて記述可能だが、数字から始まる変数の宣言はできない。

4.1. 特殊変数

変数表示するもの
$0ファイル名
$1...(連番)引数
$@引数をspaceで区切って出力
$*引数をspaceで区切って出力
$#引数の数
$?直前の処理の成否
$$シェルのPID

5.改行コード

異なる改行コードは使用できない。
つまり、Linuxで作成したシェルスクリプトをWindowsで使い回しできないということ。
Windowsの改行コードは、CR+LF
Linuxの改行コードは、LF


制御構文で指定できる条件式


ファイル、ディレクトリに関する条件式

条件式意味
-f ファイル名ファイルが存在
-d ディレクトリ名ディレクトリが存在
-e ファイル/ディレクトリファイル/ディレクトリが存在
-r ファイル/ディレクトリファイル/ディレクトリが読み取り可能

数値の条件式

条件式意味
A -eq BAとBが等しい
A -ne BAとBが等しくない
A -it BAがBより小さい
A -le BAがB以下
A -gt BAがBより大きい
A -ge BAがB以上

その他論理式

条件式意味
!条件式NOT
条件式1 -a 条件式2AND
条件式1 -o 条件式2OR
-n 文字列文字列の長さが0ではない

変数にコマンドの実行結果を代入する書式


変数名=`コマンド`
変数名=$(コマンド)

script記述ルール

1.処理の終わりは ;; を指定する(case文)
2.bash scriptの条件分岐では、構文のキーワードを逆にしてプログラムを終了させる。
・if~fi
・case~esac


制御構文(条件分岐)

【If文 書式】

#!/bin/bash
if 条件式
then
   実行文1
else
   実行文2
fi

四則演算とcase文

exprコマンドを使用し、四則演算の結果を出力できる。
↓参考サイト
exprコマンドとは?? @IT参照


【case文 書式】

#!/bin/bash
case 変数名 in
     値1) 値1の時の処理;;
     *)   どの値にも合致しなかった場合の処理;;
esac

※case文の終わりには esac を指定する


繰り返し構文

【for文 書式】

#!/bin/bash
for 変数名 in
    do
       echo $変数名
    done

【while文 書式】

while 条件式
      do
      繰り返す処理
      done

関数の利用

function文を用いて関数を定義する

【function文 書式】

fuction 関数名() {  #functionは省略可能
        処理
Return 値
}

#関数の呼び出し ()は不要
関数名 引数list

↓参考サイト
関数の使用方法


スクリプトのデバッグ

bash実行時にオプションをを指定する
bash -v : 実行するコマンドを出力
bash -x : 実行するコマンドや変数の代入など、処理内容を出力

シバンにオプション追加

-> それ以降は常にデバッグ情報を出力する

#!/bin/bash -x

setコマンドのオプションで囲む

-> 部分的にデバッグを行える

set -x
i=0
set +x

trapコマンドの利用

スクリプト内にtrapコマンドを記述することで
割り込みシグナルに対応する挙動を変更することができる。

【trapコマンド】

シグナルを受け取った際の動作を設定、表示する
-> Ctrl+C,Z などキードードからの割り込みシグナルを受け取った時の動作を、
trapコマンドで変更することができる。

参考 trapコマンドとは?
参考 Linuxのシグナルとは?



Viewing all articles
Browse latest Browse all 2863

Trending Articles