首页 > 解决方案 > 修剪特定字符,但前提是它们位于变量的开头或结尾

问题描述

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

basePath="/some/path/"

我需要修剪它,使其结果为"some/path".

但我需要它的结果,就"some/path"好像它被设置为如下任何一个:

basePath="/some/path"

basePath="some/path/"

basePath="some/path"

在 C# 中,这是一项相当容易的任务。它有一个内置的修剪功能,可以为我解决这个问题。

在 Bash 中,我看到假设您知道前导字符和尾随字符是否存在的示例。我正在尝试清理一些输入,所以我真的不知道是否存在前导斜杠或尾随斜杠。

如果它们存在,我如何修剪前导斜杠和尾随斜杠,但不修剪任何其他字符?

标签: 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

推荐阅读