特定のユーザー入力時にシェルスクリプトでコマンドを再実行させる

特定のユーザー入力時にシェルスクリプトでコマンドを再実行させる

私はホスト名をランダム化するシェルスクリプトを書いていますが、ランダムなホスト名を出力し、このホスト名を使用するかどうか尋ねてきます。

NEXTHOST=$(sed `perl -e "print int rand(99999)"`"q;d" /usr/share/dict/words)
echo "Do you want to use this hostname? (y/n)
read variable_name
if [ "$variable_name" = n ] ; then

(これは、NEXTHOST のコマンドを再実行したい部分です)、その部分はすでに理解しているので、「y」のコードは省略しました。

n を入力した場合、コマンドを再実行させるにはどうすればよいですか?

答え1

このための関数を定義して、再帰を使用することができます。例:

#!/bin/bash

#Defining hostgen function
hostgen() {
    NEXTHOST=$(sed `perl -e "print int rand(99999)"`"q;d" /usr/share/dict/words)
    echo $NEXTHOST
    read -p 'Do you want to use this hostname? (y/n)' variable_name
    if [ "$variable_name" = "n" ]; then
        echo "Okay. I will generate again"
        hostgen
    else
        echo "Your final hostname is : $NEXTHOST"
        exit
    fi
}

#Run hostgen for the first time
hostgen

ここではまだホスト名を設定していないことに注意してください。設定できます。

関連情報