bash - 修剪特定字符,但前提是它们位于变量的开头或结尾
问题描述
假设我有一个这样的变量集:
basePath="/some/path/"
我需要修剪它,使其结果为"some/path"
.
但我需要它的结果,就"some/path"
好像它被设置为如下任何一个:
basePath="/some/path"
basePath="some/path/"
basePath="some/path"
在 C# 中,这是一项相当容易的任务。它有一个内置的修剪功能,可以为我解决这个问题。
在 Bash 中,我看到假设您知道前导字符和尾随字符是否存在的示例。我正在尝试清理一些输入,所以我真的不知道是否存在前导斜杠或尾随斜杠。
如果它们存在,我如何修剪前导斜杠和尾随斜杠,但不修剪任何其他字符?
解决方案
您可以使用参数扩展
basePath=${basePath#/} # removes a leading `/` if it is there
basePath=${basePath%/} # removes a trailing `/` if it is there
示例用法
for basePath in /some/path some/path/ some/path; do
basePath=${basePath#/}
basePath=${basePath%/}
echo "$basePath"
done
印刷
some/path
some/path
some/path
推荐阅读
- corda - 我如何在 Corda 事务中使用响应者 inputsStatesAndRef?
- python - 从 pyinstaller bundle #2 访问 python 解释器
- python - 使用 matplotlib 和 numpy 查找一组局部最大值的最大值
- python - 从另一个文件调用函数 - Discord bot
- r - echarts4r:e_mark_line 符号和名称
- reactjs - React Hooks:切换模式下的重新渲染过多
- javascript - 带有 HTML 的 JS 加密
- php - 如何在远程 VPS 上运行 socketo.me 聊天服务器
- symfony - 如何在 JOIN 中添加多个“AND”条件
- python - 为什么我的模运算符为 1 字节的输入返回双倍的块大小?