ITメモ
Make SiteMap シェルスクリプト / Shell Script




シェルスクリプトの書式 / Format



シェルの拡張子

ファイル名 拡張子がなくても、シェルスクリプトの宣言があれば実行できる。
ファイル名.sh シェルスクリプトの拡張子


シェルの記述例

#! /bin/sh

echo 'Hello World'




シェルスクリプトの宣言

シェルスクリプトの宣言によって、端末で、「./シェルスクリプトファイル名」と入力することは、「 シェルスクリプトの宣言 シェルスクリプト名」とコマンド入力したことになる。

宣言部分に書く引数
  • 1つ・・・・・すべてのOSで利用可能
  • 2つ・・・・・各OSで動作が異なる


「#!」に記入したコマンドが、端末でスクリプトファイル名が実行されたときに呼び出される。
「#!」には、実行バイナリファイルを記述する必要がある。


#! /bin/sh シェルスクリプト 本来のUNIXの標準シェル「sh」。 「bash」は「sh」の派生なので、「sh」の宣言で利用できる。
#!/bin/bash bash を利用するときの宣言
#! /user/bin/perl Parlを利用する場合
#! /usr/bin/awk -f
BEGIN{
print “Hello awk!!!!”
}
awkを利用する場合



シェルの文法

#(コメント) #を入力すると、#から行末までコメントとして扱われる。
|(パイプライン) コマンド | コマンド
パイプラインとは、1つ以上のコマンドを「|(パイプライン)」で区切って並べたもの。
左側のコマンドの結果である標準出力が、右隣のコマンドの標準入力として渡される。
;(改行) 同一行に複数のコマンドを入力するときに、「;」を入力すると、改行してコマンドを入力したのと同じことになる。
|| ||リスト。 コマンド1||コマンド2は、コマンド1をまず実行し、その結果が「偽(終了ステータス=「1」)の場合のみ、コマンド2を実行する。
&& &&リスト。
コマンド1&&コマンド2は、コマンド1をまず実行し、その結果が「真(終了ステータス=「0」)」の場合のみ、コマンド2を実行する。
シングルクォート '…' シングルクォート
文字の特殊な意味を打ち消して文字列を使用する。
ダブルクォート "...” ダブルクォート
パラメータ展開とコマンド置換を除いて、文字の特殊な意味を打ち消す。
バックスラッシュ \ バックスラッシュ
次の1文字の特殊な意味を打ち消す。
‘...‘ コマンド置換
コマンドの引数、または、コマンド名を別のコマンドの標準出力で置換する。
その際、パス名展開と単語分割が行われる。
パス名展開戸単語分割を咲けるには、さらに「ダブルクォート」で囲む。
”‘.....‘”
例 echo “`cal 1 2014`”
${リスト} コマンドの置換
コマンドの引数、または、コマンド名を別のコマンドの標準出力で置換する。
パス名展開
0文字以上の任意の文字列にマッチさせる。
パス名展開
任意の1文字にマッチさせる。
[a-z] パス名展開
指定した条件の1文字にマッチさせる。
[[:alnum:]] 英数字
[[:alpha:]] 英文字
[[:ascii:]] 7ビットASCII(半角)文字(コントロールコードも含む)
[[:blank:]] スペース、タブ
[[:cntrl:]] コントロールコード
[[:digit:]] 数字([0-9]に相当)
[[:graph:]] 表示可能文字(スペースを除く)
[[:lower:]] 英小文字
[[:print:]] 印字可能文字(スペースを含む)
[[:punct:]] 記号
[[:space:]] スペース、タブ、改行、改ページ文字等
[[:upper:]] 英大文字
[[:word:]] 英数字とアンダースコア
[[:xdigit:]] 16進数([0-9A-Fa-f]に相当)
{a,b,c} ブレース展開
複数の文字列の組み合わせから、文字列を生成する。
cp /some/dir/{cat,dog}.jpg
$((算術式)) 算術式を評価し、その演算結果の数値に展開する。
チルダ展開
ユーザのホームディレクトリに展開する。
<()/>() プロセス置換
FIFOに接続した別プロセスを起動し、そのFIFO名に置換する。
IFS 単語分割
パラメータ展開などの結果を、コマンド名や引数に分割する。
コマンド<ファイル名 標準入力のリダイレクト
コマンドの標準入力にファイルを入力する。
コマンド>ファイル名 標準出力のリダイレクト
コマンドの標準出力をファイルに出力する。
コマンド>>ファイル名 標準出力のアペンドモードでのリダイレクト
コマンドの標準出力を、ファイルに追加出力する。
コマンド 2> ファイル名 標準エラー出力のリダイレクト
コマンドの標準エラー出力をファイルに出力する。
コマンド 0 1 2 ...>&0 1 2 … ファイル記述子を使ったリダイレクト
オープン済みの標準出力や、標準エラー出力などを複製する。
コマンド &> ファイル名 標準出力と標準エラー出力の同時リダイレクト
bashで標準出力と標準エラー出力を同時に、ファイルにリダイレクトするには&>が使える。
>&-/<&- ファイル記述子のクローズ
ファイル記述子をクローズするのに使用。
コマンド 0 1 2 3<>ファイル名 読み書き両用オープン
コマンドのファイル記述子を読み書き用でオープンしたファイルにリダイレクトする。
コマンド<<-終了文字列

ヒアドキュメント本体

終了文字列
ヒアドキュメント
コマンドの標準入力に一定の文書を入力する。
コマンド<<<文字列 ヒアストリング
コマンドの標準入力に、一定の文字列を入力する。