修剪特定的字符,但前提是它们位于变量的开头或结尾

假设我有一个这样的变量集:

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


以上是修剪特定的字符,但前提是它们位于变量的开头或结尾的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>