シェルプログラミングガイド
3010 ワード
基礎知識
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があることを確認します。
1.while条件
3.for((初期値;条件;ステップ)
ファイルの種類を判断する
テストフラグ 意味 例を引く
-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
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