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

基于传入参数在Bash脚本中调用不同脚本的实现咨询

给你的Bash主脚本添加专家模式触发逻辑

作为Bash新手,你已经搞定了新手菜单的核心功能,很棒!接下来咱们一步步把专家模式的参数检测加上,逻辑其实很清晰,跟着做就行~

核心思路

我们要让脚本先检查命令行参数:如果用户传入了help/man/status这类参数,直接触发对应的专家脚本;如果没有传参数,再进入原来的新手菜单。

修改后的完整代码(带详细注释)

#!/bin/bash

# --------------------------
# 第一步:处理命令行参数,触发专家模式
# --------------------------
case "$1" in
  # 匹配help或man参数,调用专家帮助脚本
  help|man)
    echo "正在进入专家帮助模式..."
    sh ./expertHelp.sh  # 替换成你实际的专家帮助脚本名
    exit 0  # 执行完专家脚本后正常退出
    ;;
  # 匹配status参数,调用系统状态专家脚本
  status)
    echo "正在进入系统状态专家模式..."
    sh ./systemStatusExpert.sh  # 替换成你实际的专家脚本名
    exit 0
    ;;
  # 没有传入任何参数,继续执行新手菜单
  "")
    ;;
  # 处理无效参数
  *)
    echo "❌ 错误:不支持的参数 '$1'"
    echo "📌 可用参数:help/man、status;或者不带参数进入新手菜单"
    exit 1  # 错误退出,返回非0状态码
    ;;
esac

# --------------------------
# 第二步:原来的新手菜单逻辑(保留并优化)
# --------------------------
echo -n "请输入你的名字:"
read name
echo -e "\n=== 新手菜单 - 欢迎你,$name ==="
echo "===================================================="
echo -e "1) 文件与目录管理命令\n2) 文本处理命令\n3) 系统状态命令\n4) 退出"
echo "请输入选择(1-4):"
read en

case "$en" in
  1)
    sh ./fileNovice.sh
    ;;
  2)
    sh ./textNovice.sh
    ;;
  3)
    sh ./systemStatusNovice.sh
    ;;
  4)
    echo "👋 再见..."
    sleep 1  # 加1秒延迟,让用户看清告别信息
    exit 0
    ;;
  *)
    echo "❌ 错误:选择无效,请输入1-4之间的数字"
    exit 1
    ;;
esac

关键细节说明

  1. 参数检测优先级:把参数判断放在脚本最开头,这样脚本一运行就先处理用户的参数请求,不会先进入新手菜单再跳转。
  2. 参数匹配规则:用help|man可以同时匹配两个参数,灵活方便。
  3. 脚本执行权限:记得给主脚本加执行权限,运行命令:chmod +x mainMenu.sh
  4. 运行方式:
    • 进入新手菜单:./mainMenu.sh
    • 触发专家帮助:./mainMenu.sh help 或 ./mainMenu.sh man
    • 触发系统状态专家模式:./mainMenu.sh status

新手小贴士

  • 如果你的专家脚本不在当前目录,可以用绝对路径调用(比如sh /home/you/scripts/expertHelp.sh)
  • 后续要加更多专家模式参数(比如file触发文件管理专家脚本),只要在第一个case里加新分支就行,逻辑和现有部分一致
  • 可以给专家脚本也加上参数检测,让功能更完善

内容的提问来源于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 07:56:46