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

如何在Bash脚本中按最后一个斜杠分割字符串为两个变量?

在Bash中按最后一个斜杠分割路径字符串

要实现按最后一个/分割路径,用Bash原生的参数扩展就能搞定,不用调用awk、sed这类外部工具,高效又简洁。

核心方法

假设你的路径变量是path_str="Example/Folder/Structure":

  • 提取上级路径(对应你要的string1):
    parent_path="${path_str%/*}"
    
    这里%/*表示从字符串末尾开始,匹配最短的/*模式并删除,也就是砍掉最后一个/及后面的内容。
  • 提取最后一段文件夹名(对应你要的string2):
    folder_name="${path_str##*/}"
    
    这里##*/表示从字符串开头开始,匹配最长的*/模式并删除,也就是砍掉最后一个/及前面的内容。

结合slather脚本的完整示例

针对你处理iOS覆盖率报告的场景,写个完整的脚本片段:

#!/bin/bash

# 接收传入的目标路径参数
target_path="$1"

# 处理边界情况:如果路径没有斜杠(目标在根目录)
if [[ "$target_path" != */* ]]; then
    parent_dir="."
    target_folder="$target_path"
else
    parent_dir="${target_path%/*}"
    target_folder="${target_path##*/}"
fi

# 切换到上级目录,确保slather能正确找到路径
cd "$parent_dir" || { echo "上级目录不存在"; exit 1; }

# 生成指定文件夹的slather覆盖率报告
slather coverage --directory "$target_folder" \
  --workspace YourApp.xcworkspace \
  --scheme YourAppScheme \
  --output-directory coverage-reports

测试验证

输入Example/Folder/Structure时:

  • parent_dir会得到Example/Folder
  • target_folder会得到Structure

如果输入的是根目录下的CoreModule,则parent_dir设为当前目录.,target_folder为CoreModule,完美兼容原来的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:15:18