特定のユーザー入力でシェルスクリプトを再実行するコマンドを作成する


1

ホスト名をランダム化するシェルスクリプトを作成していますが、ランダムなホスト名を出力し、たとえばこのホスト名を使用するかどうかを尋ねるプロンプトを表示します

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

これにはまだホスト名を設定していないことに注意してください。出来るよ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.