👌

Linuxコマンドを選択式にして連続実行

2 min read

選択式連続実行スクリプト

スクリプト内容

  • menu()を利用し、「番号を入力→準備したコマンドや関数を実行」
  • テストとして、以下を記載
  1. pwdコマンド実行
  2. 用意したtestfunction(関数)実行
  3. 用意したnextstep(関数)実行
~/work # cat select.sh
#!/bin/sh

##### Menu #####
# 番号選択し、連続実行可能とするメニュー
function menu()
{
    while :
    do
    echo "#####`hostname`:`date +%Y%m%d`#####"
    echo "1 : pwd"
    echo "2 : test function"
    echo "3 : next step"
    echo "0 : exit"
    read key
    if [ $key == 1 ]; then
        pwd
    elif [ $key == 2 ]; then
        testfunction
    elif [ $key == 3 ]; then
        echo "nextstep test"
        nextstep
    elif [ $key == 0 ]; then
        exit
    fi
    done
}

##### 事前準備 #####
# 複数ファイルやノード等を扱いたい場合に利用
declare -a Files=(\
        file1 \
        file2 \
        file3 \
        file4 \
        file5 \
)

# 関数として実行させる場合に利用
function testfunction(){
        for ((i=0; i< ${#Files[@]}; i++));
        do {
                echo "----- ${Files[$i]} ------"
        } done
}

# 途中で止めたい処理がある場合に利用
function nextstep(){
    key=n
    while [ $key == n ]
    do
            echo "next step: y or n(exit)"; read key
            if [ $key == "n" ]; then
                exit
            fi
    done
}

##### Menu表示 #####
menu

テスト

  • 1から順番に実行
~/work # sh select.sh
#####DESKTOP-M5NE5GB:20201106#####
1 : pwd
2 : test function
3 : next step
0 : exit
1
/root/work
#####DESKTOP-M5NE5GB:20201106#####
1 : pwd
2 : test function
3 : next step
0 : exit
2
----- file1 ------
----- file2 ------
----- file3 ------
----- file4 ------
----- file5 ------
#####DESKTOP-M5NE5GB:20201106#####
1 : pwd
2 : test function
3 : next step
0 : exit
3
nextstep test
next step: y or n(exit)
y
#####DESKTOP-M5NE5GB:20201106#####
1 : pwd
2 : test function
3 : next step
0 : exit
3
nextstep test
next step: y or n(exit)
n
~/work #
  • 0指定でexit
~/work # sh select.sh
#####DESKTOP-M5NE5GB:20201106#####
1 : pwd
2 : test function
3 : next step
0 : exit
0
~/work #