Python PyBugz Bash变量\n忽略换行符
我有一个bash脚本,它从csv文件中提取bug,并使用PyBugz将其导入bugzilla 使用以下顺序:Python PyBugz Bash变量\n忽略换行符,python,bash,variables,newline,pybugz,Python,Bash,Variables,Newline,Pybugz,我有一个bash脚本,它从csv文件中提取bug,并使用PyBugz将其导入bugzilla 使用以下顺序: description=$(echo "$line" |cut -f5 -d ';') bugz -d 3 -b http://bugzilla/bugzilla/xmlrpc.cgi -u "$user" -p "$pass" post --product "$prod" --component "$compo" --title "$title" --description "$des
description=$(echo "$line" |cut -f5 -d ';')
bugz -d 3 -b http://bugzilla/bugzilla/xmlrpc.cgi -u "$user" -p "$pass" post --product "$prod" --component "$compo" --title "$title" --description "$description" --op-sys "$ops" --platform "$platf" --priority ""$prio"" --severity "$sever" --alias "$alias" --assigned-to "$assign" --cc "$ccl" --version "$ver" --url "$url" --append-command "$appen" --default-confirm "y"
但是包含“blabla\n blabla”的描述行(包括换行符)被认为是
“描述:布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉”
如果我导出一个bug并将输出转储到一个文本文件中,pybugz会将0x0a作为换行符。如何使pybugz将我的\n字符识别为0x0a 如果描述包含字符\n,并且您希望将其转换为实际的换行符,则必须执行以下操作:
bugz ... --description "$(echo -e "$description")" ...
这也会暴露出其他转义序列,请参见我知道了
捕获数据的方法如下所示:
while read line ; do
description=$(echo "$line" |cut -f5 -d ';')
done <csvfile
读行时;做
description=$(回显“$line”| cut-f5-d';”)
准确地完成了$description
中的操作?它是否包含\n
?如果使用foo\n bar
的描述手动运行bugz
,它能工作吗?foo\\n bar
的描述有效吗?您好,谢谢您的建议。是,该文件确实包含0x5c 0x6e作为序列。对于您的代码,pybugz似乎也这样做。也许这就是python程序读取命令行的方式??顺便说一句:如果我使用一个包含新行的手动变量,python程序会正确识别新行。bash echo内置的-e
选项应该解释0x5c 0x6e,并给出0x0a——比较echo“foo\nbar”| od-tx1
vsecho-e“foo\nbar”| od-t x1
您需要读取-r
,这样反斜杠就不会被吞没。bash中惯用的“逐行迭代文件”是,而IFS=read-r行;做完成
lines=$(cat csvexport |wc -l)
for (( lineno=1 ; $lineno<=$lines ; lineno++ )); do
description=$(cat csvexport |sed -n "$lineno"p |cut -f5 -d ';')
done