Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
String Shell脚本反转两个串联变量?_String_Bash_Shell_Concatenation - Fatal编程技术网

String Shell脚本反转两个串联变量?

String Shell脚本反转两个串联变量?,string,bash,shell,concatenation,String,Bash,Shell,Concatenation,我只是想连接两个字符串变量,但输出结果是相反的。有人能告诉我为什么吗?谢谢 我的shell脚本: HEADER=`cat header-cp-match-src-file.csv` echo header: $HEADER HEADER="$HEADER,Hello,123456" echo header: $HEADER 输出: header: good_description,tranx count ,Hello,123456description,tranx count 第一行是正确的

我只是想连接两个字符串变量,但输出结果是相反的。有人能告诉我为什么吗?谢谢

我的shell脚本:

HEADER=`cat header-cp-match-src-file.csv`
echo header: $HEADER
HEADER="$HEADER,Hello,123456"
echo header: $HEADER
输出:

header: good_description,tranx count
,Hello,123456description,tranx count
第一行是正确的,但最终输出没有
标题:“
”,而
“,Hello,123456”
则位于字符串的前面

==========解决方案==========


文件
标题cp match src file.csv
最初来自Windows环境,因此它包含一个
\r
,根据建议,在删除
\r
后,现在可以正常工作。谢谢

HEADER=`cat header-cp-match-src-file.csv`
echo header: $HEADER
HEADER=${HEADER/$'\r'/}
HEADER="$HEADER,KEVIN,123456"
echo header: $HEADER

第一个变量的末尾可能包含一个
\r
(MSWin行结束的一部分)。尝试删除它

echo ${HEADER/$'\r'/}

第一个变量的末尾可能包含一个
\r
(MSWin行结束的一部分)。尝试删除它

echo ${HEADER/$'\r'/}

如果只需要文件的第一行,只需执行以下操作:

read HEADER < header-cp-match-src-file.csv
除此之外:不要使用大写变量名(你们从哪里养成这个习惯的?),不要使用反勾号,而是使用
$(…)
。例如,你的第一行看起来会更好

header=$(cat header-cp-match-src-file.csv)
或者更好的做法是:

header=$(< header-cp-match-src-file.csv)
或者甚至用
printf
替换
echo

printf "header: %s\n" "$header"

如果只需要文件的第一行,只需执行以下操作:

read HEADER < header-cp-match-src-file.csv
除此之外:不要使用大写变量名(你们从哪里养成这个习惯的?),不要使用反勾号,而是使用
$(…)
。例如,你的第一行看起来会更好

header=$(cat header-cp-match-src-file.csv)
或者更好的做法是:

header=$(< header-cp-match-src-file.csv)
或者甚至用
printf
替换
echo

printf "header: %s\n" "$header"

你到底想做什么?(请描述问题Y,而不是你在试图解决Z时遇到的问题X,相信这最终会解决Y)。输出看起来不准确-至少第二行应该有“header:”和“good”两个词。。。您是否已将准确的输入和输出复制到问题中?
标题cp match src file.csv
具有DOS行结尾。回车在第一次设置时保留为
标题的最后一个字符
;第二次打印时,会导致在行首打印
,Hello,123456
,覆盖字符串的第一部分。您能给我们看一些输入数据示例吗?当我们可以复制您的问题时,更容易找到答案。另外,尝试通过
od-c
管道输出以搜索虚假的回车。@gniourf_gniourf&ghoti,谢谢您的及时回复,但这正是我正在做的,我不太确定我还可以为这个问题添加什么。您到底想做什么?(请描述问题Y,而不是你在试图解决Z时遇到的问题X,相信这最终会解决Y)。输出看起来不准确-至少第二行应该有“header:”和“good”两个词。。。您是否已将准确的输入和输出复制到问题中?
标题cp match src file.csv
具有DOS行结尾。回车在第一次设置时保留为
标题的最后一个字符
;第二次打印时,会导致在行首打印
,Hello,123456
,覆盖字符串的第一部分。您能给我们看一些输入数据示例吗?当我们可以复制您的问题时,更容易找到答案。另外,尝试通过
od-c
管道输出以搜索虚假的回车。@gniourf_gniourf&ghoti,感谢您的及时回复,但这正是我正在做的,我不太确定我还可以为这个问题添加什么。非常感谢!!这正是问题所在,也是你的解决之道!!谢谢你,伙计,我早就死了,不知道该怎么解决。。。调试这样的东西太难了!斯塔克万岁!非常感谢你!!这正是问题所在,也是你的解决之道!!谢谢你,伙计,我早就死了,不知道该怎么解决。。。调试这样的东西太难了!斯塔克万岁!