所以我在Bash脚本中有两个函数,但我不太确定如何在函数中调用另一个函数并注入一个输入,以便它完成该特定函数的操作。
function DoingSomething {
read -r input
if [ "$input" == '1' ]; then
#do this action
elif ["$input" == '2' ]; then
#do this other action
else
echo -e "Enter something correct!"
fi
}
function DoingThat {
if [ $param -gt 50 ];
then `DoingSomething`
#Essentially I want this function to input '2' into DoingSomething when its called
else
echo -e "You are okay!"
fi
}
任何帮助都很感激!:)
我尝试使用&&命令。
then `DoingSomething` && "2"
2条答案
按热度按时间pbpqsu0x1#
要求交互式输入是一个糟糕的设计选择。让函数读取参数来代替。
您可能希望将其重构为
case
语句,并使用比小整数更多的助记符值。如果你想要交互式的用户I/O,你可以把它放在调用函数中。
...但一般来说,阅读命令行参数对于可用性和可重用性来说是一个更好的设计选择。
当然,如果你执意要保留这个设计,解决方案是
or(Bash-only“here string”语法)
brccelvz2#
read -r reply
意味着你想要a)从stdin读取或者B)提示用户输入。对于前一种方法,我想到了两种方法:另一种方法是将
2
作为命令行参数传递给函数,例如:如果你(真的)想要支持这种类型的可变性,你需要在函数中添加一些逻辑,例如:
试驾: