我有一个shell脚本来自动化我的程序的构建.我需要改造的版本号码,如V4_5_1-RC1到4.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)
=$(..)而不是${..}评估命令$在变量赋值语句中同
#!/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)