我从属性中获取了一个变量值,并且可以在sh文件中访问它。但是我无法将另一个值附加到该变量。
请提供建议。
$ echo "Build ID from properties:"$BUILD_ID
Build ID from properties: abcd_v6_c1
$ echo " num----------------" build_${BUILD_ID}.zip
.zip---------------- build_abcd_v6_c1
请建议如何追加.zip值。
假设我们有一个变量var1=value
。
如果我想在变量开头添加一些文本,可以这样做:
var1="some text${var1}"
var1="${var1}some text"
看起来你的$BUILD_ID
变量中有一个Windows 回车符。
可以通过以下命令检查(回车符将显示为^M
):
cat -A <<< "$BUILD_ID"
^M
字符,请使用CTRL+V+M):$ BUILD_ID="585548979^M"
$ echo ${BUILD_ID}text
text48979
$ ID=${BUILD_ID%$'\r'}
$ echo ${ID}text
585548979text
${BUILD_ID/%$'\r'/}
也是有效的,因为它会将最短的$'\r'
字符串从后面替换为空。但是像您建议的那样简单地缩短字符串更简单。 - SLePort${BUILD_ID%/$'\r'/}
读成了${BUILD_ID/$'\r'/%}
(交换了初始的/
和%
),这就是为什么我认为它是错误的。 - chepnercat -A
是 GNU 扩展;cat -et
也适用于 BSD/OSX cat
;sed -n l
是符合 POSIX 标准的替代方法)。 - mklement0以下方法适用于我。我的.sh文件包含以下内容:
#!/bin/bash -x
. /usr/test/build.properties
echo $BUILD_ID
echo "num----------------" build_${BUILD_ID}.zip
您可以简单地使用赋值(=)
运算符来追加文本。
a=don
b=$a" jon"
echo $b #==>don jon
谢谢大家,
问题已经解决了...这是因为^M的原因,感谢@Kenavoz,现在我可以得到正确的ID并且能够继续进行输出。
更改:BUILD_ID=${ID%$'\r'}
谢谢, Sampath A
$BUILD_ID
变量末尾可能有一个特殊字符,对输出产生不良影响(例如^M
或^A
)。你可以使用cat -A <<< "$BUILD_ID"
进行检查。 - SLePort