替换和删除shell脚本中的字符

mle*_*les 0 bash sed

我有一个shell脚本来自动化我的程序的构建.我需要改造的版本号码,如V4_5_1-RC14.5.1-RC1.该V应被删除和_应改为..我尝试了几件事,例如用sed:

$NAMEEXT = "V4_5_1-RC1"
$lffNameRSC = ${sed -e "s/V//g" <<< $NAMEEXT}
$lffNameRSC = ${sed -e "s/_/./g" <<< $lffNameRSC}
echo $lffNameRSC
Run Code Online (Sandbox Code Playgroud)

但我收到了错误.

./makerelease.sh: line 113: ${sed -e "s/V//g" <<< $NAMEEXT}: bad substitution
./makerelease.sh: line 114: ${sed -e "s/_/./g" <<< $lffNameRSC}: bad substitution
Run Code Online (Sandbox Code Playgroud)

ДМИ*_*КОВ 5

  • 周围不应有空格 =
  • 应该$(..)而不是${..}评估命令
  • 不应该$在变量赋值语句中

#!/bin/bash

NAMEEXT="V4_5_1-RC1"
lffNameRSC=$(sed -e "s/V//g" <<< $NAMEEXT)
lffNameRSC=$(sed -e "s/_/./g" <<< $lffNameRSC)
echo $lffNameRSC
Run Code Online (Sandbox Code Playgroud)

你会得到

4.5.1-RC1
Run Code Online (Sandbox Code Playgroud)

而且,顺便说一下,它可以更轻松,比如

$> echo "V4_5_1-RC1" | sed "s/V//g; s/_/./g"
4.5.1-RC1
Run Code Online (Sandbox Code Playgroud)