0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【学習】Linuxコマンド Day12 ~実践、シェルスクリプトの基本~

Posted at

今日学ぶこと

  • シェルスクリプト

シェルスクリプトとは

複数のコマンドラインをシェルで実行できるようにまとめたファイル。
これまでパイプラインを駆使して複数のコマンドを繋いだが、さらに複雑な操作に対応できるといえる。
条件分岐やループなどプログラミング言語のような機能も使うことができ、シェルスクリプトを実行するだけで何度も同じ操作を再現できる。

シェルスクリプトを作ってみる

シェルスクリプトを作るうえでまずは"シバン"を書くことを理解する。
これは「どのシェルで実行するか」を指定するための記述。

#!/bin/bash

この次の行からコマンドを実際に記述していくこととなる。
それでは実際に作ってみる。

$ mkdir ~/bin
$ cd bin 
$ vim test.sh

mkdirでシェルスクリプトの置き場をつくったあとにvimでtest.shを新規作成。

#!/bin/bash
ls -F | nl

シバンの2行目以降が実行されることとなるため、実際には3行目、4行目と追記していくことが可能。
インサートモードからノーマルモードに切り替えて、保存後、実行権限を与える。

$chmod 755 test.sh

そして作成したtest.shを実行してみる。

$ test.sh
1 test.sh*

記述したコマンドが実行されていることが確認できた。

繰り返し処理

forを用いて繰り返し処理を行ってみる。
今回はvimでtest.shを編集して書いてみる。

#!/bin/bash
for i in 1 2 3
do 
echo $i
done

保存後、実行。

$ test.sh
1
2
3

条件分岐

ifを使用した条件分岐を試してみる。
変数TESTが1の場合"1"と表示する。

#!/bin/bash
TEST=1
if [ $TEST -eq 1 ]; then
    echo "1"
else
    echo "none"
fin

ここで細かいところだが個人的な注意点。
if [ $TEST -eq 1 ]
この[]の前後の部分などに適切にスペースが入っていないとmissingとなり、うまく実行されなかったため、正確にスペースを空けることに注意。

次にcaseを使用した条件分岐。
キーボードからの値も取得してみる。

#!/bin/bash
$ read -p: TEST
case "$TEST" in
"a" ) echo "A" ;;
"b" ) echo "B" ;;
"c" ) echo "C" ;;
esac

保存後、実行してみる。

$ test.sh
:a 
A

しっかりと"a"を取得し、"A"を返していることが確認できた。

おつかれまでした

今回も基本的な部分かと思いますがシェルスクリプトについて簡単に実践してみました。
利便性を最初に理解でき、これまでの学習してきたvimも活用できて復習にもなったかと思います。
そしてまさに条件分岐、繰り返しはプログラミング言語のような機能で、自分としてはすんなり理解はできました。ただ同様にスペースなど正確に入力しないといけない点とうまく動かないときはエラー文をしっかり確認するべき点がこの先扱う際に注意していきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?