我正在尝试/从bash中的字符串的开头和结尾修剪可能的内容。
我可以通过以下方式完成此操作:
string="/this is my string/"
string=${string%/}
string=${string#/}
echo $string # "this is my string"
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一种方法可以将这两行(2 + 3)连接起来以一次替换两者。是否有加入替代的方法,还是我将获得的最好的替代方法?
提前致谢。
来这很晚了...您可以使用bash变量替换来删除前导OR尾随可选的斜杠,但不能同时执行这两个操作。如果执行:
VAR1=/one/two/
VAR2=one/two
echo ${VAR1} ${VAR2}
echo ${VAR1#/} ${VAR2#/}
echo ${VAR1%/} ${VAR%/}
Run Code Online (Sandbox Code Playgroud)
然后我们得到:
/one/two/ one/two # No change
one/two/ one/two # No leading slashes
/one/two /one/two # No trailing slashes
Run Code Online (Sandbox Code Playgroud)
如我们所见,变量内部的斜杠保持不变
您可以使用中间变量将它们组合为:
VAR3=${VAR1#/} # Remove optional leading slash
VAR3=${VAR3%/} # Remove optional trailing slash
echo ${VAR3}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有办法做到这一点。但是,如果您确定您的字符串以 / 开头并以 / 结尾,则可以按${P:M:N}格式对其进行修剪:
string='/this is my string/'
string=${string:1:(-1)}
Run Code Online (Sandbox Code Playgroud)
添加检查也可能有所帮助,但它仍然是两个语句:
[[ $string == /*/ ]] && string=${string:1:(-1)}
Run Code Online (Sandbox Code Playgroud)
注意:解决方案仅从 Bash 4.2 开始可用。
| 归档时间: |
|
| 查看次数: |
5475 次 |
| 最近记录: |