LoginSignup
1
0

標準入力を受け付けながら処理を分岐するシェルの書き方

Last updated at Posted at 2021-03-07

たまーに書くことがある標準入力を受け付けながら処理を分岐するシェルのサンプル。

こういうやつ

番号を入力したら入力された番号の処理を実行するってやつ。
以下のサンプルでは 1 を入力したら 1って処理を実行してる。
movie.gif

テンプレート

read で標準入力を受け付けて、 Swith文で分岐する、みたいな感じ。

#! /bin/bash
####################################################
# スクリプト名 : main.sh
# 説明         : 指定された処理を実行するよ
# 引数         : なし
#   $1         : -
# 実行例       : ./main.sh
# 更新日       : YYYY/MM/DD
# 作成者       : takiguchi-yu
####################################################

# 処理1 引数なし
function _func1
{
  echo
  echo -e "\033[0;32m[INFO]: \033[0;39m"処理1 開始します
  echo -e "\033[0;32m[INFO]: \033[0;39m"処理1 終了します
  echo
}

# 処理2 引数2つ
function _func2
{
  echo
  echo -e "\033[0;32m[INFO]: \033[0;39m"一つ目の引数
  echo -e "\033[0;32m[INFO]: \033[0;39m"$1
  echo -e "\033[0;32m[INFO]: \033[0;39m"二つ目の引数
  echo -e "\033[0;32m[INFO]: \033[0;39m"$2
  exit 0
}

# メイン処理
while :
do
  echo "------------------------------------------------------"
  echo -e "\033[0;34m[1]: \033[0;39m"処理1 を実行します
  echo -e "\033[0;34m[2]: \033[0;39m"処理2 を実行します
  echo -e "\033[0;34m[3]: \033[0;39m"処理3 を実行します
  echo -e "\033[0;31m[q]: シェルを終了します\033[0;39m"
  echo "------------------------------------------------------"
  read -p "番号を選択してください: " num
  case "${num}" in
    "1" ) _func1 ;;
    "2" ) _func2 arg1 arg2 ;;
    "q" ) exit ;;
  esac
done

1
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
1
0