修剪特定的字符,但前提是它们位于变量的开头或结尾
假设我有一个这样的变量集:
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