使用bash使用变量连接字符串时无法获得正确的输出

时间:2016-05-26 03:05:24

标签: bash

我有一个简单的脚本来逐行读取输入文件的内容,并添加了一些额外的字符串。这是一个例子。

输入文件:input.txt
此input.txt的内容

aaaaaa
bbbbbb
cccccc
dddddd
eeeeee

读取文件的代码

    while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "abc.def.hig.ewe.adg.hea.L_${line}.great"
    done < "$1"

我不确定它究竟在哪里出错;我无法得到正确的输出。看起来当你在变量的末尾添加.great时,输出会搞乱序列。

2 个答案:

答案 0 :(得分:0)

将评论转移到答案中。

你得到什么输出?你期望什么输出?我有五行类似于:

int progPrec=0;
int ProcessedEmployees=0;
int AllEmployees = WorkersList.Tables[0].Rows.Count;

for (int x = 0; x < AllEmployees ; x++)
{

   //Codings For Salary Processing Comes Here

   ProcessedEmployees++;      

   int progPrec = (int)Math.Round(((double)(ProcessedEmployees) / (double)(AllEmployees)) * 100);

   lblPercentage.Text = "Salary Processing : " + progPrec + " %";

}

使用Bash 3.2.57和Bash 4.3(在Mac OS X 10.11.5上)。

来自Windows的数据文件或其他使用CRLF行结尾的来源?这将使事情看起来像:

abc.def.hig.ewe.adg.hea.L_aaaaaa.great
而不是我之前展示的。并且,我注意到,如果你只显示你得到的输出,这将是很容易解释的(或折扣)。

  

是的,你是对的。问题是输入文件。从Windows上传到Unix时,它已损坏。

答案 1 :(得分:-1)

您是否考虑过使用像awk这样的东西?这对于这些类型的简单任务非常有用。

$ cat input.txt
aaaa
bbbb
cccc

-

$ awk '{print "prefix_"$0"_suffix"}' input.txt
prefix_aaaa_suffix
prefix_bbbb_suffix
prefix_cccc_suffix