情况如下:我具有带有交互式tui的全局脚本,以及几个函数和中间脚本,这些脚本必须仅使用全局脚本中的1个函数。例如:
#!/bin/bash
echo " INSTRUCTIONS:"
read -rsp $'Press any key to continue... n' -n1 key
function1 {
}
function2 {
}
function3 {
}
read -r -p "Let's go? [yes/no]: " input
if [[ "$input" != "yes" ]]
then
echo "Process aborted." &&
exit
fi
PS3='(hit the number): '
OPT=("1" "2" "3")
select opt in "${OPT[@]}"
do
case $opt in "1")
function1
break
;;
"2")
function2
break
;;
"3")
function3
break
;;
*)
echo invalid option, please retry
;;
esac
done
exit 0
问题是如何以默默地使用'function3'的方式向中间脚本提供参数,而无需提示进行全局脚本做任何事情?(读取提示并选择选择(
将选项作为命令行参数以命令行参数,并在设置的情况下跳过提示。为避免重复case
代码,请将其放入函数中,以便可以从主线代码和select
循环中调用。
#!/bin/bash
function1() {
}
function2() {
}
function3() {
}
do_func() {
opt=$1
case $opt in
"1")
function1
;;
"2")
function2
;;
"3")
function3
;;
*)
echo invalid option, please retry
;;
esac
}
if [ -n "$1" ]
then
do_func "$1"
exit 0
fi
echo " INSTRUCTIONS:"
read -rsp $'Press any key to continue... n' -n1 key
read -r -p "Let's go? [yes/no]: " input
if [[ "$input" != "yes" ]]
then
echo "Process aborted." &&
exit
fi
PS3='(hit the number): '
OPT=("1" "2" "3")
select opt in "${OPT[@]}"
do
do_func "$opt"
done
exit 0
然后您将使用:
scriptname 3
运行function3
。