CUS_PRODUCT_VER=`echo V${CUS_PRODUCT_VER:0:1}.${CUS_PRODUCT_VER:1:1}.${CUS_PRODUCT_VER:2:1}.${CUS_PRODUCT_VER:3:1}` 使用printf
时间: 2024-03-10 16:46:47 浏览: 66
将上述代码改写为使用 `printf` 函数的方式,可以这样写:
```
CUS_PRODUCT_VER=$(printf "V%s.%s.%s.%s" ${CUS_PRODUCT_VER:0:1} ${CUS_PRODUCT_VER:1:1} ${CUS_PRODUCT_VER:2:1} ${CUS_PRODUCT_VER:3:1})
```
`printf` 函数的第一个参数是格式化字符串,其中 `%s` 表示字符串,这里需要输出 4 个字符串,每个字符串都是从 CUS_PRODUCT_VER 变量中取出的一个字符,因此需要使用 4 个变量来表示这 4 个字符,分别是 `${CUS_PRODUCT_VER:0:1}`、`${CUS_PRODUCT_VER:1:1}`、`${CUS_PRODUCT_VER:2:1}`、`${CUS_PRODUCT_VER:3:1}`。在 `printf` 函数中,这 4 个变量按照指定的格式输出,中间用点号连接,最终得到格式化后的字符串,赋值给 CUS_PRODUCT_VER 变量。
相关问题
echo -e "\n版本自增" echo 'user='$1 myTargetFile=./device/newlink/NL5H00X/Hisi352_YG.csv csvSel=cat $myTargetFile|grep "${CUS_PROJECT_NAME},${CUS_PRODUCT_ID},${CUS_OS_TYPE},${CUS_CUSTOMER_NAME}" delVercsv=${csvSel//$CUS_PRODUCT_VER/} echo -e "\n csv select:\n\t"$csvSel echo -e "\n csv product version:\t"$CUS_PRODUCT_VER echo -e "\n csv delVercsv :\t"$delVercsv CUS_PRODUCT_VER=echo $CUS_PRODUCT_VER|tr -cd "[0-9]" let CUS_PRODUCT_VER++ CUS_PRODUCT_VER=echo V${CUS_PRODUCT_VER:0:1}.${CUS_PRODUCT_VER:1:1}.${CUS_PRODUCT_VER:2:1}.${CUS_PRODUCT_VER:3:1} echo " 版本更新为:"$CUS_PRODUCT_VER 我如何将修改过的CUS_PRODUCT_VER重新写到文件里面去
你可以使用sed命令将修改过的CUS_PRODUCT_VER写回到文件中,如下所示:
```
sed -i 's/${CUS_PROJECT_NAME},${CUS_PRODUCT_ID},${CUS_OS_TYPE},${CUS_CUSTOMER_NAME},${CUS_PRODUCT_VER}/${CUS_PROJECT_NAME},${CUS_PRODUCT_ID},${CUS_OS_TYPE},${CUS_CUSTOMER_NAME},${CUS_PRODUCT_VER}/g' $myTargetFile
```
其中,-i选项表示直接修改文件,s命令用于替换字符串,g选项表示替换所有匹配的字符串,$myTargetFile表示要修改的目标文件。这个命令会将文件中所有匹配的字符串替换为新的字符串,从而实现将修改后的CUS_PRODUCT_VER写回到文件中。
CUS_PRODUCT_VER=`echo $CUS_PRODUCT_VER|tr -cd "[0-9]"` 换一个方法
可以使用sed命令来实现。具体命令如下:
```
CUS_PRODUCT_VER=$(echo $CUS_PRODUCT_VER | sed 's/[^0-9]//g')
```
这条命令中,sed命令的作用是将CUS_PRODUCT_VER中的非数字部分替换为空字符串,最终得到的结果就是只包含数字的字符串。
阅读全文