bash - 这个 bash 字符串操作是如何工作的?
问题描述
我对正在使用的 bash 脚本感到有些困惑。这是令我困惑的语法/操作的简化位:
STACKDIR="/Users/my.name/projects/someproject"
WORKDIR="/Users/my.name/projects/someproject/foo/bar/baz"
SUBPATH="${WORKDIR/$STACKDIR\//}"
echo $STACKDIR
echo $WORKDIR
echo $SUBPATH
这输出
/Users/my.name/projects/someproject
/Users/my.name/projects/someproject/foo/bar/baz
foo/bar/baz
如何从一开始SUBPATH="${WORKDIR/$STACKDIR\//}"
就删除?STACKDIR
WORKDIR
解决方案
看${parameter/pattern/string}
从上面的链接:模式被扩展以产生一个模式,就像在文件名扩展中一样。参数被扩展,模式与其值的最长匹配被替换为字符串。
双\\
被替换为一个\
希望这可以帮助。
附录:POSIX 未指定。并非所有的 Unix shell 都实现了它。
推荐阅读
- c# - 主动机器人触发瀑布
- swift - 在状态栏打开时捕获事件(iOS 9)
- node.js - 查找引用对象 id 等于 user._id 的数据
- python - 将多列值金额循环到Python中文件的借方和贷方金额列
- python - Python - 如何用引用表替换列中的所有匹配文本 - 这需要替换单元格中的多个匹配文本
- android - 我们可以在 Android 中编写代码来打开具有多个指纹的不同应用吗
- node.js - 使用 Node JS 连接到 Atlas MongoDB 时出错
- android - 为什么不显示来自相机的用户图像?
- angular - 如何在不同的角度分量中使用相同的功能
- php - 未从 Laravel 中的公用文件夹(https://localhost/storage)获取图像