如何获得用户输入,然后如何使用名称中的用户输入来调用函数?

时间:2018-07-13 14:22:06

标签: bash shell

我如何编写一个bash脚本,要求用户输入一个数字(1、2或3),该数字用于调用名称中带有该数字的函数?之后,该函数将显示一条消息,其中包含函数编号。

这是我到目前为止所拥有的:

#!/bin/bash

read -p "Enter a Number (1,2, or 3): " num

function foo() {
   echo This message is from function $1
}

foo $num

这只是返回用户输入内容的通用函数。我只是不知道如何将用户输入的内容合并到函数名称中。就像用户输入1一样,将调用foo1。如果用户输入2,则调用foo2。 3,foo3被调用等等。除了使用if else语句并编写三个单独的函数之外,还有更好的方法吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

当然,没有理由不能调用名称是字符串文字和变量的组合的函数:

#!/bin/bash

foo1() { echo 'hello from foo1!'; }
foo2() { echo 'hello from foo2!'; }
foo3() { echo 'hello from foo3!'; }

read -p "Enter a Number (1,2, or 3): " num

if [[ $num = [123] ]]; then # validate input
  foo"$num"
fi

答案 1 :(得分:0)

也许是这样的:

#!/bin/bash

echo Enter Number:
read num

function1() { echo one; }
function2() { echo two; }

case $num in
    1)
        function$num
    ;; 
    2)
        function$num
    ;;
esac