我正在尝试创建一个带有查询的字符串,该查询将保存/发送到另一个位置,此字符串包含不同的变量。
我遇到的问题是变量的回声是完全颠倒和混合的。
见下面的代码:
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
答案 0 :(得分:1)
tokenID
变量末尾有一个回车符,可能是因为/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')
答案 1 :(得分:0)
我认为一切正常,
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
为什么你觉得这里有什么东西? 最好的问候,格奥尔格