String Shell脚本反转两个串联变量?
我只是想连接两个字符串变量,但输出结果是相反的。有人能告诉我为什么吗?谢谢 我的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 第一行是正确的
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,感谢您的及时回复,但这正是我正在做的,我不太确定我还可以为这个问题添加什么。非常感谢!!这正是问题所在,也是你的解决之道!!谢谢你,伙计,我早就死了,不知道该怎么解决。。。调试这样的东西太难了!斯塔克万岁!非常感谢你!!这正是问题所在,也是你的解决之道!!谢谢你,伙计,我早就死了,不知道该怎么解决。。。调试这样的东西太难了!斯塔克万岁!