我有这个命令:
MODIFIED_BRANCH_NAME=$(echo $BRANCH_NAME | tr '/_.' '-' | tr -s '-' | tr '[:upper:]' '[:lower:]' )
MODIFIED_BRANCH_NAME=${MODIFIED_BRANCH_NAME%-}
我想用一行来做。如何将某些内容通过管道传输到 %- 运算符?
示例:
BRANCH_NAME=abc//kdkd_kdkd_-
MODIFIED_BRANCH_NAME 将是 abc-kdkd-kdkd
实际上我想做的是,在完成
$(echo $BRANCH_NAME | tr '/_.' '-' | tr -s '-' | tr '[:upper:]' '[:lower:]' )
之后,我想删除尾随的“-”(如果存在)
如何将某些内容通过管道传输到 %- 运算符?
你不能将某些东西通过管道传递给操作符。运算符作用于值,而不是流。
删除 bash 中尾随的破折号?
sed
将是一个简单的方法。 sed 's/-$//g'
将替换结尾处的 -
($
)。演示:
% sed s/-$//g <<<"hi-world-"
hi-world
所以你的新管道可能看起来像:
MODIFIED_BRANCH_NAME=$(echo $BRANCH_NAME | tr '/_.' '-' | tr -s '-' | tr '[:upper:]' '[:lower:]' | sed 's/-$//g' )
或者您可以将这些命令替换为
sed
,它可以完成大部分命令。
%# echo "Ji/wor..ld_" | sed -e s/[./_]/-/g -e 's/-\{2,\}/-/g' -e s/-$//g | tr [:upper:] [:lower:]
ji-wor-ld