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

如何在bash的case语句中判断参数是否包含/以执行对应建目录逻辑

实现代码
#!/bin/bash

case $1 in
# 无传入参数场景
"" ) 
    mkdir project
;;
# 匹配完全不含斜杠的参数,对应当前目录创建目录需求
[^/]* ) 
    mkdir -- "$1"
;;
# 匹配含斜杠的路径参数,对应指定路径创建目录需求
* )
    mkdir -p -- "$1"
;;
esac
逻辑说明
  • 第二个分支的[^/]*是Shell原生Glob匹配规则:[^/]表示匹配任意非斜杠字符,*表示匹配0个或多个前面的规则,整体可以匹配所有完全不包含斜杠的非空参数,正好对应直接传入目录名的场景
  • 代码中加入--是为了防止参数以-开头时被识别为mkdir的命令选项
  • 第三个分支mkdir新增了-p参数,可自动创建不存在的父级目录,避免指定路径的上层目录不存在时报错
  • 脚本完全兼容要求的三种调用语法:
    • 无参数调用./case.sh:默认在当前目录创建project目录
    • 传纯目录名调用./case.sh DIRECTORYNAME:在当前目录创建对应名称的目录
    • 传完整路径调用./case.sh PATH/DIRECTORYNAME:在指定路径下创建对应目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:45:02