You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于参数判断调用不同Bash脚本:新手/专家菜单实现求助

嘿,刚接触Bash就能写出这样的新手菜单逻辑,已经很棒了!要实现「检测特定参数切换到专家脚本」的需求其实很直观,咱们一步步来改:

核心思路

在脚本最开头先处理命令行参数——如果用户传入了help/man/status中的任意一个,直接调用专家脚本并退出;如果没有传参数,再继续执行你写好的新手菜单逻辑。

修改后的完整代码

#!/bin/bash

# 第一步:优先处理命令行参数,判断是否触发专家模式
# 用正则匹配是否是指定的参数:help/man/status
if [[ "$1" =~ ^(help|man|status)$ ]]; then
    # 调用专家脚本,这里假设你的专家脚本名为expertMenu.sh,可根据实际修改
    # 同时把用户传入的参数传递给专家脚本,方便它做针对性处理(比如显示对应帮助)
    sh ./expertMenu.sh "$1"
    exit 0  # 执行完专家脚本后直接退出,避免进入新手菜单
fi

# 没有传入指定参数,执行新手菜单逻辑
echo -n "Name please? "
read name
echo "Menu for $name"
echo "===================================================="
echo -e "Enter ( 1 ) File and Directory Managment Commands\nEnter ( 2 ) Text Processing Commands\nEnter ( 3 ) System Status Commands\nEnter ( 4 ) Exit"
echo "Enter your choice :"
read en
case "$en" in
1)sh ./fileNovice.sh;;
2)sh ./textNovice.sh;;
3)sh ./systemStatusNovice.sh;;
4)echo "Good Bye..."
sleep 0;;
*)echo "Wrong Option selected" ;; 
esac

关键细节解释

  1. 参数检测逻辑:[[ "$1" =~ ^(help|man|status)$ ]] 是用Bash的正则匹配,判断第一个命令行参数$1是否是我们指定的三个值之一,这样比多个if判断更简洁。
  2. 传递参数给专家脚本:sh ./expertMenu.sh "$1" 把用户传入的参数(比如help)传给专家脚本,这样专家脚本里可以通过$1判断要执行的操作(比如显示帮助文档、输出系统状态)。
  3. exit 0:执行完专家脚本后立刻退出主脚本,防止代码继续往下走进入新手菜单,这一步很重要哦。

可选优化建议

如果想让参数更灵活,比如支持短选项(比如-h对应help),可以把参数检测改成:

if [[ "$1" =~ ^(help|man|status|-h)$ ]]; then
    # 统一把短选项转换成对应长参数传给专家脚本
    local arg="$1"
    [[ "$arg" == "-h" ]] && arg="help"
    sh ./expertMenu.sh "$arg"
    exit 0
fi

这样用户不管输入./main.sh help还是./main.sh -h,都能触发专家模式的帮助功能啦~

内容的提问来源于stack exchange,提问作者Milan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:00:15