Posted at

基本的なシェルスクリプト 備忘録


シェルスクリプトについてまとめてみた

業務でシェルを使いそうな雰囲気がプンプンしているため初心者ながらシェルスクリプトを入門してみようと思います


まずは環境の構築


  • CentOS7

  • Vagrant

  • VirtualBox
    上記でシェルを実行する環境を整えます。


  1. VagrantとVirtualBoxをインストールする。


  2. こちらよりcentos7を仮想環境として導入するスクリプトを確認する。

  3. 確認したコマンドを実施して環境を整える。

vagrant init centos/7

vagrant up
vagrant ssh

4.sshでcentosに入れることを確認する。(もしもユーザーやらパスワードを求められたらvagrantと入力する)


実際にシェルスクリプトを書いて実行してみる


  1. 任意のディレクトリにファイルを作成する。

touch hello.sh

2.スクリプトを書く。

vi ./hello.sh

#!/bin/sh

echo "helloworld"

3.実行する。

実行方法は3種類

3-1. sh hello.sh コマンドを実行する。

3-2. bash hello.shコマンドを実行する。

3-3. 権限を変更して実行する。

sudo chmod 755 ./hello.sh

./hello.sh


基本的な操作(#!/bin/shは省略します)


  • 出力


echo 出力する文字


  • 入力を求める


read


  • 演算


expr 2 \+ 2
expr 2 \- 2
expr 2 \* 2
expr 2 \/ 2


  • 変数に格納


a=1
b=2


  • 結果を変数に格納する際にはバッククォートで囲む(スペース必須)


r=`expr $a \+ $b`


  • 変数の値を出力


echo $r


  • if分岐

if [ $res -eq $zero ]; then

echo "偶数です"
else
echo "奇数です"
fi
# 同値判定は=演算子を使用する(文字列)
if [ "ABC" = "ABC" ]; then
echo "equal"
else
echo "not equal"
fi

※ -epは数値の等価判定


  • switch構文

var="red"

case "$var" in
"blue" ) echo "bule" ;;
"green" ) echo "green" ;;
"red" ) echo "red" ;;
esac


  • whileループ(-ltは「<」のこと)

int=0

while [ $int -lt 5 ]; do
echo $int
int=`expr $int \+ 1`
done


  • untilループ(-gtは「>」のこと)

until [ ! \( $int -gt 0 \) ]; do

echo $int
int=`expr $int \- 1`
done


  • forループ

for var in 10 11 12 ; do

echo $var
done


  • 関数

MyFunction () {

echo "関数実行"
}
# 実行
MyFunction


  • 関数(引数あり)

add () {

echo `expr $1 \+ $2`
}
# 実行
add 1 3


最後に

シェルは避けては通れないものだと思い勉強することにしました。

まだまだ新人のうちに勉強しておくことは多い。。

つまずいた部分はスペースがないと正常に判定されなかったり、うっかりwindowsで書いてしまい改行コードがCRLFになっていたため実行できなかったりの部分です。

Linuxでは改行コードがLFなので注意です!!

もう少し深く勉強するために本でも購入しようと思います!

ではでは、良いコーディングライフを!