実行環境
Windows10上のVirtualBox仮想マシン
ゲストOS Centos8
1.シェルスクリプトとは
シェルスクリプトは主にオペレーティングシステムのコマンドラインインタプリタから実行可能なコマンドの一連の流れをファイルにして再利用できるようにしたもの。UNIXでは特にコマンドインタプリタのことをシェルと呼ぶ。
大別すると以下のシェルにはいくつかの種類があり、主に下記のものに分けられる。
・Bシェル系:sh, bash, ksh
・Cシェル系 :csh, tcsh
・zshは両者の中間
Bシェル系のshはUnix標準のシェルで、Linuxではbashが標準搭載されている。
現在使っているシェルの確認
$ echo $0
または、
$ echo $SHELL(こちらはログインシェル)
シェルのプロセスの情報を表示
$ ps -p $$
利用可能なシェルの一覧の確認
$ cat /etc/shells
2.シェルスクリプトの作成と実行
(1)シェルスクリプトの作成
・#!/bin/bash
#はhash、!はbangで、#!をshebang(シェバン)と言い、シェバンからスクリプトを実行するインタープリタが呼ばれ、/bin/bash のファイルが実行されます。
・# コメント
・改行(Enter)でコマンドの終わりを表し、また;(セミコロン)で区切ることも可能。
・複数行のコマンドは、(バックスラッシュ)で行を続ける。
test.sh
#!/bin/bash
echo "Hello World" > ./hello.txt
ls -l ./hello.txt
cat ./hello.txt
(2)実行
$ bash ./シェルスクリプト名
また、シェルスクリプトファイルに実行権限を与えて、コマンドとして実行
$ chmod +x test.sh
$ ./test.sh
3.スクリプトファイル
(1)変数
・変数の名前には半角英数字(a-z、A-Z、0-9)とアンダーバー(_)が使える。
・変数に値を代入するときは、=を前後空白なしで書く。
・文字列の場合は”を付けて囲む。
・変数にアクセスする時は変数名の前に$を付ける、または$付けて変数を{}で囲む。
#!/bin/bash
a1="Hello"
echo $a1
echo ${a1}
$ bash ./test1.sh
Hello
Hello
(3)if文
if [ 条件1 ]; then
コマンド1
fi
test1.sh
#!/bin/bash
if [ "a" = "a" ]
then
echo "a文字列とa文字列は等しい"
fi
$ bash ./test1.sh
a文字列とa文字列は等しい
(4)for文
for 変数 in 値リスト
do
コマンド
done
test2.sh
#!/bin/bash
for i in W o r l d
do
echo $i
done
$ bash ./test2.sh
W
o
r
l
d
(5)while文
while 条件式
do
コマンド
done
test3.sh
#!/bin/bash
a=1
while [ $a -lt 3 ] # aの値が3より小さいか(**l**ess **t**han)
do
echo $a
a=`expr $a + 1` # a+1を実行し、その結果を再度aに格納
done
$ bash ./test3.sh
1
2
(6)case文
case 値 in
条件・値1 ) コマンド1 ;;
条件・値2 ) コマンド2 ;;
条件・値3 ) コマンド3 ;;
…
条件・値n ) コマンドn ;;
esac
test4.sh
#!/bin/bash
text="a"
case $text in
A) echo "A" ;;
a) echo "a" ;;
x) echo "z" ;;
*) echo "?" ;; #ワイルドカード
esac
$ bash ./test4.sh
a
The end