让 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

请注意,我尚未在此设置主机名。您可以这样做。

相关内容