シェルプログラミングガイド


基礎知識
shell実行方式   sh xxsh(文書にはrの権限が必要です。)  ||  ./x x.sh(文書にはx権限が必要です。)注:sh x.sh方式が安全です。
ファイル名の拡張子.sh
shellの内容は書き出しです。/bin/bash𞓜噬唴唴!/bin/sh𞓜噬唴唴!/bin/csh𞓜噬咻唴!/bin/ksh注:𞃳!/bin/bashの使用が多いです。
終了  exit 0
変数の割り当てと使用
定義なしで直接使用できます。  注:変数が与えられている場合=番号の両端にスペースがないといけません。
変数名または変数名で変数の内容にアクセスします。
フロー制御
判断する  注:四角い括弧のスペースを確保します。各条件にはthenがあることを確認します。

if [ Cd ‘dirname' ];then
    1
elif 2;then
    2
else
     4
fi

case $ in
match_1 )
        1
        ;;
match_2)
        2
        ;;
……
*)( )
        n
        ;;
esac
ループ
1.while条件

do

        //TODO

done

2.until条件

do
   
done
 
3.for((初期値;条件;ステップ)

do
   
done
4.for循環変数in変数リスト

do
   
done
よく判断条件文を使います。
ファイルの種類を判断する
テストフラグ    意味    例を引く
-e    “ファイルまたはディレクトリが存在しますか?    test Ce$file_name
-f    “ファイルまたはディレクトリが存在し、ファイルですか?    test Cf$file_name
-d    “ファイルまたはディレクトリが存在しますか?ディレクトリです。    test Cd"/boot"
-b    “ファイルまたはディレクトリが存在し、ブロックデバイスです。    test Cb"/dev/sda 1"
-c    “ファイルまたはディレクトリが存在し、ワードデバイスです。    test Cc"/dev/キティ0"
-S    “ファイルまたはディレクトリが存在し、ソケットファイルです。    test CS"/var/run/rpcbind.sock"
-p    “ファイルまたはディレクトリが存在し、FIFOファイルです。    test Cp$file_name
-L    “ファイルまたはディレクトリが存在し、リンクファイルです。    test CL$file_name
ファイルのパーミッションを判断する
テストフラグ    意味
-r    “ファイルまたはディレクトリが存在し、読み取り可能な権限がありますか?
-w    “ファイルまたはディレクトリが存在し、書き込み可能な権限がありますか?
-x    “ファイルまたはディレクトリが存在し、実行可能な権限がありますか?
-u    “ファイルまたはディレクトリが存在し、SUIDの属性があります。
-g    “ファイルまたはディレクトリが存在し、SGIDの属性があります。
-k    “ファイルまたはディレクトリが存在し、Sticky bitの属性があります。
-s    “ファイルまたはディレクトリが存在し、空ではないファイルです。
ファイル間の比較
テストフラグ    意味
-nt    “ファイル名1「ファイル名2」より新しいかどうか(newer than)
-ot    “ファイル名1「ファイル名2」より古いかどうか(older than)
-ef    「ファイル名1」と「ファイル名2」が同じファイルかどうかを判断します。主にハードリンク、すなわち2つのファイルが同じinodeノードを指すかどうかを判断します。
整数間の比較
テストフラグ    意味
-eq    両方が等しい(equal)
-ne    二つの数が不揃いです。
-gt    整数1は整数2より大きいです。
-lt    整数1は整数2より小さい(less than)
-ge    整数1が整数2以上である。
-le    整数1が整数2以下である(less than or equal)
と、あるいは、非
テストフラグ    意味
-a    (and)二つの条件が同時に成立すればtrueに戻ります。  test Ce-file 1 Ca Cd file 2
-o    (or)二つの条件のいずれかが成立するとtrueに戻ります。  test Cr file 1 Co Cx file 2
!    (非)現在の条件の非を取る  testCd file 1
制御構造
整数変数の値を計算します。
expr  注:演算記号とパラメータの間にスペースがあります。パス記号(*)は、乗算演算子として使用します。
let例:let s=(2+3)*4