はじめに
未来電子テクノロジーでインターンをしているやっきーです。
プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
シェルスクリプトとは
シェルスクリプトとは、シェルで実行するコマンドをまとめて記述したものである。シェルの中で、プログラミング言語を記述するという考え方が近い。もちろん、変数を使うこともできるし、キーボードからの入力を反映させることもできる。
出力する
シェル上に文字を出力したいときはechoを用いる。
echo "hello"
この場合、helloと返される。
キーボードから入力する
キーボードから文字を入力したい場合、readを用いる。スクリプトの記述を終えると、シェルは入力が可能な状態になる。
read x
# エンターキーを押すと、入力が可能な状態に切り替わる。
ループ文
for文に示した範囲を満たしている間、doからdoneまでの動作が行われる。
for number in {1..99..2}
do
echo $number
done
この場合、変数numberを1から99まで変化させる。1周回るたびにnumberを2加算する。
なお、echoの引数に変数を使用するときは$を付ける。
四則演算
2つの入力値から四則演算の結果を返す手順は以下の通り。
算術演算をするときは式を (( )) でくくる。
read x
read y
echo $(($x + $y)) #和
echo $(($x - $y)) #差
echo $(($x * $y)) #積
echo $(($x / $y)) #商
echo $(($x % $y)) #剰余
それぞれの計算結果が出力される。
数値の比較
3つの入力値x,y,zの大きさを比較する手順は以下の通り。
条件分岐をするときはif文を用いる。ifの後に条件式を書き、thenの後にしたい動作を書く。if文の中が偽の場合にさらに条件式を書きたい場合はelifを用いる。それらの条件式に該当しないものはelseを用いる。
複数の条件式を使用するときは||(or), &&(and)を使い、 [[ ]] でくくる。
read x
read y
read z
if [[ $x == $y && $y == $z ]]; then
echo "EQUILATERAL"
elif [[ $x == $y || $x == $z || $y == $z ]]; then
echo "ISOSCELES"
else
echo "SCALENE"
fi
文字列の比較
文字を比較する式は以下の通り。
read x
if [[ $x == Y || $x == y ]]; then
echo "YES"
else
echo "NO"
fi
なお、以下のように ||, &&の代わりに-o, -aを使い、 [ ] でくくっても等価である。
read x
if [ $x == Y -o $x == y ]; then
echo "YES"
else
echo "NO"
fi
文字列の一部を取得
入力値の一部を利用する場合には以下のように記述する。
readでキーボードの入力を読み込み、変数xに代入する。そして、echoでxの中の一部の文字を出力させることができる。
read x
echo ${x:2:1} #xの3番目の要素(x[2])から1文字出力
この場合の例として、キーボードで world と入力すると3文字目の l が出力される。
参考URL
【初心者でもわかる】Linuxシェルスクリプト入門 まとめました
【Linux入門】if文による条件分岐の方法をわかりやすく解説! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト