【ShellScript】初めてのシェルスクリプト


概要

シェルスクリプトの基礎を取り扱った内容になりますが、vimの操作を理解していることを前提に進めていきます。

シェル、シェルスクリプトについて

  • シェルとは
  • オペレーティングシステムと対話するためのインターフェイス

  •  シェルスクリプトとは

  •  シェルが解釈できるプログラム

【シェルスクリプトのルール】

シェルを書く際は行頭にshebangを書きインタプリタを指定する必要がある。
こちらで紹介する内容は一行目に「#!/bin/zsh」と記載されているものを前提としています。

また、ファイルを作成しただけでは実行できないので、「chmod +x ファイル名」としてパーミッションを変更する必要がある点についてご注意ください。

基礎構文

ここでは検証用に作成したmyscript.shというファイルを使用します。
ファイル作成のコマンドはこちら↓

touch myscript.sh
  • 文字の出力

お約束のhello world!

#!/bin/zsh

echo hello world!

実行(実行コマンドの記載は以降省略します)

/myscript.sh
  • 算術式

簡単な足し算

#!/bin/zsh

num1=1 #変数num1へ1を代入
num2=2 #変数num2へ2を代入

echo "合計 $((num1 + num2))"
  • 条件分岐

定番のif文

#!/bin/zsh

echo "条件分岐の練習"

if [ 5 - eq 5 ];then
    echo "同じ数字です"
fi

echo "よくできました"

上記を実行すると文言が全て表示されるはず。
続いて条件文を変更してみましょう。
以下のようにします。

#!/bin/zsh

echo "条件分岐の練習"

if [ 5 - eq 3 ];then
    echo "同じ数字です"
fi

echo "よくできました"

上記のように変更すると「同じ数字です」は出力されません。
これは5と3が一致していないためです。

  • 条件分岐(少し複雑に)

60歳より上か下かでメッセージを分けるという失礼なプログラムを書いてみました(ごめんなさい)

#!/bin/zsh

echo あなたの年齢は?

if [ $age -gt 60 ];then
    echo 若いとは言えませんね。。
else
    echo まだまだ人生これから!
fi
echo ご回答ありがとうございました
  • 配列操作

リストとも呼ばれデータを格納する場所になります。
例ではOSを例にして配列を扱ってみましょう。

os=("windows" "Mac" "Linux")
echo $os

上記のように出力すると配列の中身が全て列挙されてしまいます。
中身を指定して出力したい場合は以下のように書きます。

#!/bin/zsh
os=("windows" "Mac" "Linux")
echo $os[1] #[1]を追記

このようにするとインデックス番号で指定しアクセスすることが可能です。
今回のケースではインデックス番号1はMacになるのでこちらが出力されます。
※インデックス番号は0から数えるので注意が必要※

  • ループ処理

プログラミングでお馴染みのfor文

echo 開始

for i in 1 2 3 #処理を3回繰り返す
do
    echo こんにちは
done

echo 終了

または

echo 開始

for i in `seq 1 10` #処理を10回繰り返す
do
    echo こんにちは
done

echo 終了

繰り返す回数が多い場合は上の書き方の方がいいですね。

  • 別のループ処理

while文を使った処理。数字が3ずつ増え、15以上になるまで繰り返すという処理。

echo 開始

number=1

while [ $number -le 15];
do
    echo "$number"です。
done

echo 終了

上記を実行すると以下のようになります。

1です。
4です。
7です。
10です。
13です。

最後に

プログラミングの経験がない方はとっつきにくい内容だったかもしれませんが、経験がある方はスムーズに理解できる内容だったかなと思います。
まだまだ書いていない部分があるのでこの記事は随時更新していきます。