讓 shell 腳本在某些使用者輸入上重新執行命令

讓 shell 腳本在某些使用者輸入上重新執行命令

我正在編寫一個 shell 腳本,它會隨機化我的主機名,但會列印隨機主機名稱並提示我是否要使用此主機名

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

請注意,我尚未在此設定主機名稱。你可以這麼做。

相關內容