我一直在尝试逐行读取文件,并使用值和布尔结果输出每一行。
文本文件的内容
082843ab-c1e5-4729-8c03-2cec11996f01
09180b12-21b3-4bdb-a27b-ef9c026909f3
用于解析文件的脚本
#!/bin/bash
my_file="${1}"
declare -a myarray
let i=0
while IFS=$'\n' read -r line_data; do
myarray[i]="${line_data}"
((++i))
done < $my_file
force_transmission="true"
let i=0
while (( ${#myarray[@]} > i ));do
new_var=${myarray[i++]}
combined_var="$new_var $force_transmission"
echo $combined_var
#this will print out the external id(file)
#printf "${myarray[i++]}\n"
done
Expectataion
082843ab-c1e5-4729-8c03-2cec11996f01 true
09180b12-21b3-4bdb-a27b-ef9c026909f3 true
实际
true3ab-c1e5-4729-8c03-2cec11996f01
trueb12-21b3-4bdb-a27b-ef9c026909f3
非常感谢任何帮助,我已尝试过这个
的5种变体答案 0 :(得分:1)
您的输入文件有DOS换行符。打印时,这些将光标发送回行的开头,从而覆盖内容。
在输入文件中使用dos2unix
,或修改以下行:
new_var=${new_var%$'\r'} # remove $'\r', a CR character, from the end of new_var
答案 1 :(得分:0)
如果你想做什么,请使用一种专用工具而不是bash
脚本
<强>已更新强>
消除CR
,只是
$ sed 's/\r$/ true/' file
082843ab-c1e5-4729-8c03-2cec11996f01 true
09180b12-21b3-4bdb-a27b-ef9c026909f3 true