【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です。
最後に
プログラミングの経験がない方はとっつきにくい内容だったかもしれませんが、経験がある方はスムーズに理解できる内容だったかなと思います。
まだまだ書いていない部分があるのでこの記事は随時更新していきます。
Author And Source
この問題について(【ShellScript】初めてのシェルスクリプト), 我々は、より多くの情報をここで見つけました https://qiita.com/qux42/items/28df48d9a12348052657著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .