以完全错误的顺序回显打印variables

我正在试图创build一个string与将保存/发送到另一个位置的查询,这个string包含不同的variables。

我遇到的问题是variables的回声完全颠倒混合。

见下面的代码:

tokenID=$(docker exec -ti $dockerContainerID /bin/sh -c "cat /tempdir/tokenfile.txt") serverName="asdasd" attQuery="$tokenID $serverName" agentRegQuery="$./opt/mule/bin/amc_setup -H $attQuery" echo TOKEN ID $tokenID echo SERVER NAME $serverName echo $attQuery echo $agentRegQuery 

查找下面我收到的输出:

 TOKEN ID 29a6966f-fa0e-4f08-87eb-418722872d80---46407 SERVER NAME asdasd asdasdf-fa0e-4f08-87eb-418722872d80---46407 asdasdmule/bin/amc_setup -H 29a6966f-fa0e-4f08-87eb-418722872d80---46407 

tokenIDvariables的末尾有一个回车字符,可能是因为/tempdir/tokenfile.txt是DOS / Windows格式(行以回车+换行符结束),而不是unix(行以换行符结束)。 当你自己打印tokenID的时候,它看起来不错,但是如果你在同一行上打印了其他的东西,它会覆盖掉这一行的第一部分。 所以当你打印$attQuery ,它打印这个:

 29a6966f-fa0e-4f08-87eb-418722872d80---46407[carriage return] asdasd 

…但第二行打印在第一行,所以它出现为:

  asdasdf-fa0e-4f08-87eb-418722872d80---46407 

解决的办法是将文件转换为unix格式( dos2unix将这样做,如果你有),或删除脚本中的回车。 你可以这样做:

 tokenID=$(docker exec -ti $dockerContainerID /bin/sh -c "cat /tempdir/tokenfile.txt" | tr -d '\r') 

我认为一切都应该如此

 echo TOKEN ID $tokenID -> TOKEN ID 29a6966f-fa0e-4f08-87eb-418722872d80---46407 echo SERVER NAME $serverName -> SERVER NAME asdasd echo $attQuery -> asdasdf-fa0e-4f08-87eb-418722872d80---46407 echo $agentRegQuery -> asdasdmule/bin/amc_setup -H 29a6966f-fa0e-4f08-87eb-418722872d80---46407 

你为什么觉得这里有什么东西? 最好的问候,乔治