Bash 如何获取用户输入,然后用用户输入的名称调用函数?
如何编写一个bash脚本,要求用户输入一个数字(1、2或3),用于调用名称中包含该数字的函数?之后,函数将显示一条消息,其中包含函数编号 以下是我目前掌握的情况:Bash 如何获取用户输入,然后用用户输入的名称调用函数?,bash,shell,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 这只是一个通用函数,返回用户输入的任何内容。我只是不知道如何将用户输入的内容合并
#!/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语句和编写三个单独的函数之外,还有更好的方法吗
感谢您的帮助 可能是这样的:
#!/bin/bash
echo Enter Number:
read num
function1() { echo one; }
function2() { echo two; }
case $num in
1)
function$num
;;
2)
function$num
;;
esac
也许是这样的:
#!/bin/bash
echo Enter Number:
read num
function1() { echo one; }
function2() { echo two; }
case $num in
1)
function$num
;;
2)
function$num
;;
esac
当然,没有理由不能调用名称为字符串文字和变量组合的函数:
#!/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
当然,没有理由不能调用名称为字符串文字和变量组合的函数:
#!/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
仅数字不能在函数名中构成有效标识符。让我们知道名称与数字presentNumber之间的关系。仅数字不能在函数名中构成有效标识符。让我们知道名称与当前数字的关系,不要挑剔,但这只适用于函数的单位数索引。最好使用:if[$num=~(1 | 2 | 3)];然后#验证输入……你怎么看?@Andre这只是验证的一个基本示例-如果OP真的有
foo1
。foo100
,那么我想检查该范围内的有效数字(或者更可能的是,重新考虑整体方法)会更有意义。对于问题中的基本情况,我认为=[123]
比您的正则表达式更好(如果您打算使用正则表达式,我建议您使用=~^[1-3]$
)。不要挑剔,但这只适用于函数的单位数索引。最好使用:if[$num=~(1 | 2 | 3)];然后#验证输入……你怎么看?@Andre这只是验证的一个基本示例-如果OP真的有foo1
。foo100
,那么我想检查该范围内的有效数字(或者更可能的是,重新考虑整体方法)会更有意义。对于问题中的基本情况,我认为=[123]
比您的正则表达式更好(如果您打算使用正则表达式,我建议您使用=~^[1-3]$
)代码>:)我的生活改变了!您可以使用1 | 2)函数$num代码>:)我的生活改变了!