我有一个脚本,可以使用最近的提交消息在每个Jenkins构建上生成变更集。问题是作者名称包含\因为它有域,所以当我写入文件时,shell将\作为一个字母解释,我不会看到实际的<domain>\<name>
,而是看到像{ {1}}。
我目前的脚本如下:
<domain><name>
作为输出示例,我得到类似的内容:
git --git-dir=<git dir> log origin/${BUILD_NAME} --since \"$sinceDate\" --graph --oneline --pretty="%h %<(28)%ci %<(20)%an: %s" | while read item
do
printf "changeset: $item \r\n" >> //<destination>//change_set_${WEEK_NUMBER_DATE_HOUR}.txt;
done
而不是
changeset: * 0e27e683b 2017-09-26 09:35:16 +0300 SROjohn : #task #18856
有没有办法阻止shell解释&#34; \&#34;?
答案 0 :(得分:3)
POSIX read
联构帮助页:
默认情况下,除非指定
−r
选项,否则<backslash>
将充当转义字符。
使用read -r item
。
并且,正如@jthill所添加的,printf
的常量格式字符串:
printf 'changeset: %s \r\n' "$item" >> "//<destination>//change_set_${WEEK_NUMBER_DATE_HOUR}.txt"
并引用$BUILD_NAME
。