シェルスクリプトの作成

実行環境
 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