Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash对带有变量的字符串进行concat时,无法获得正确的输出_Bash - Fatal编程技术网

使用bash对带有变量的字符串进行concat时,无法获得正确的输出

使用bash对带有变量的字符串进行concat时,无法获得正确的输出,bash,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" 而IFS=''读

我有一个简单的脚本,可以通过添加一些额外的字符串逐行读取输入文件的内容。这里有一个例子

输入文件: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"
而IFS=''读取-r行| |[[-n“$line”];做
echo“abc.def.hig.ewe.adg.hea.L_${line}.很棒”
完成<“$1”

我不确定到底哪里错了;我无法获得正确的输出。看起来,当您在变量末尾添加
.great
时,输出将打乱序列。

您是否考虑过使用类似awk的方法?这对于这些类型的简单任务非常有用

$ cat input.txt
aaaa
bbbb
cccc
-

将评论转换为答案

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

abc.def.hig.ewe.adg.hea.L_aaaaaa.great
使用Bash3.2.57和Bash4.3(在MacOSX10.11.5上)


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

.greatf.hig.ewe.adg.hea.L_aaaaaa
而不是我之前展示的。而且,我注意到,如果你只展示了你得到的输出,这很容易解释(或打折)

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


你得到了什么输出?你期望什么样的产出?使用bash3.2.57和bash4.3,我得到了五行类似于abc.def.hig.ewe.adg.hea.L_uuaaaa.great的代码。数据文件是来自Windows还是其他使用CRLF行结尾的源?这将使事情看起来像:
.greatf.hig.ewe.adg.hea.L_uuuaaaa
而不是我之前展示的那样。而且,我注意到,如果你只展示了你得到的产出,这很容易解释(或打折)。是的,你是对的。问题是输入文件。从windows上载到unix时,它已损坏。真是个错误。谢谢,谢谢,维克多。实际上我的问题是sed-i。我想根据行号替换文件内容。这里有一个例子:sed-i“30s | ^.$| abc.def.acb.wet.hee.L|${line}.standard |”post_req.xml然而输出总是混乱,标准总是毫无理由地跳到行的开头。
.greatf.hig.ewe.adg.hea.L_aaaaaa