私的AI研究会 > Shell覚書

ShellScript覚書

※ 最終更新:2021/08/22 

「Hello,World!!」

変数

シェル変数

引数

特殊変数

特殊変数意味
$0シェルスクリプトの名前
$nn番目の引数
$*すべての引数リスト
$#与えられた引数の数
$?直前に実行したコマンドの戻り値
$$シェルスクリプトが実行された際のPID
$LINENOこの変数を記述した行番号

条件分岐

if

test

case

testコマンド オプション

ループ

for

seq

while

expr

関数を使用する

ディレクトリを移動する

 ShellScript内で現在のディレクトリを移動したときの、終了時にディレクトリの位置

mycd.sh
#!/bin/sh

cd /path/terget

実行後カレントディレクトリは変化しない

$ sh mycd.sh
$ ./mycd.sh

実行後カレントディレクトリは変化する

$ source mycd.sh

受け取った引数をすべて別のコマンドに渡す

ファイルやディレクトリの有無を確認する

ファイルが存在する場合

 if文の演算子で「-e」を使うことでファイルが存在しているかどうかを確認することが出来る。

if [ -e ファイル ]; then
  実行するコマンド
fi

ファイルが存在しない場合

「! -e」とすることで、ファイルが存在しない場合に「真」となり、コマンドを実行させることが出来る。~

if [ ! -e ファイル ]; then
  実行するコマンド
fi

ディレクトリが存在する場合

 ディレクトリがあるかどうかを確認する場合は、「-d」を使用する。

if [ -d ディレクトリ ]; then
  実行するコマンド
fi

ディレクトリが存在しない場合

 ディレクトリが存在していないことを確認させる場合は、演算子に「!」を付ける。

if [ ! -d ディレクトリ ]; then
  実行するコマンド
fi

その他の演算子

 ファイルやディレクトリの存在を確認する際に使用できる演算子一覧

演算子説明
-a ファイルファイルがあれば真
-b ファイルファイルがありブロックス特殊ファイルであれば真
-c ファイルファイルがありキャラクター特殊ファイルであれば真
-d ファイルファイルがありディレクトリであれば真
-e ファイルファイルがあれば真
-f ファイルファイルがあり通常のファイルであれば真
-g ファイルファイルがありSGID(特殊なアクセス権)であれば真
-G ファイルファイルがあり実行グループIDによる所有者であれば真
-h ファイルファイルがありシンボリックであれば真(-Lと同じ)
-k ファイルファイルがありステッキービットが設定されていれば真
-L ファイルファイルがありシンボリックであれば真(-hと同じ)
-O ファイルファイルがあり実行ユーザIDによる所有者であれば真
-p ファイルファイルがあり名前付きパイプ(named pipe)であれば真
-r ファイルファイルがあり読み取り可能であれば真
-s ファイルファイルがありサイズが0より大きければ真
-S ファイルファイルがありソケットであれば真
-t FDFD(ファイルディスクリプタ)が端末でオープンされていれば真
-u ファイルファイルがありSUID(特殊なアクセス権)であれば真
-w ファイルファイルがあり書き込み可能であれば真
-x ファイルファイルがあり実行可能であれば真
 

更新履歴

 

参考資料

 

Last-modified: 2021-08-23 (月) 08:23:37