我尝试创建一个bash脚本,让用户同时使用菜单样式和命令行开关样式界面。我想知道是否有办法将参数传递给select
中的菜单选项,就好像它只是脚本的参数一样。例如,在我的脚本中,我可以通过说junk -d file.txt
指定要移动到我的垃圾文件夹的文件。但是如果用户没有指定任何参数,则应使用select
选项。即1) move file 2) clear junk folder 3) watch folder
等。
在此菜单上,我希望能够编写该选项,然后向该选项发送参数。像1 filetobemoved.txt
一样。我尝试将$OPTARG
放在菜单调用的方法之后,但这似乎不起作用。
这是我目前的菜单代码,我试图调用recover方法并将参数(文件名)传递给它。
if (( $# == 0 ))
then if (( $OPTIND == 1 ))
then select menu_list in list recover delete total watch kill exit
do case $menu_list in
"list") list;;
"recover") recover $GETOPT;;
"delete") delete;;
"total") total;;
"watch") _watch;;
"kill") _kill;;
"exit") exit 0;;
*) echo "unknown option";;
esac
done
fi
感谢您的帮助。
答案 0 :(得分:0)
将执行案例的代码放在函数中。然后,您可以检查命令行选项并跳过select
,然后只需调用该函数。
do_command() {
case "$1" in
"list") list;;
"recover") recover $GETOPT;; # had -a after recover
"delete") delete;;
"total") total;;
"watch") _watch;;
"kill") _kill;;
"exit") exit 0;;
*) echo "unknown option";;
esac
}
if (($# == 0))
then if (( $OPTIND == 1 ))
then select menu_list in list recover delete total watch kill exit
do do_command "$menu_list"
done
fi
elif [[ "$1" = "-d" ]]
then do_command delete
...
fi