在bash中替换另一个变量中的变量时,打印到控制台不起作用

时间:2018-03-12 13:51:12

标签: bash

我正在观察一个奇怪的问题,当我在另一个变量(B)中替换变量(A)并打印变量B时,控制台输出混乱了。

docker_command="docker ps | grep consul | awk '{print \$1}'"
container_id=$(execute_command_on_host $IP $USER_NAME $USER_PASSWD "$docker_command")
echo "container_id: $container_id"
service_command="docker exec "$container_id" consul catalog services"
echo "service_command: $service_command"

#run script

Output:

container_id: 411d55019dba
consul catalog servicesommand: docker exec 411d55019dba

输出的最后一行搞砸了,有点混乱。但是如果我使用container_id运行directy那么相同的脚本然后它可以工作

container_id="411d55019dba"
service_command="docker exec "$container_id" consul catalog services"
echo "service_command: $service_command"

#run script

Output:

service_command: docker exec 411d55019dba consul catalog services

我觉得我错过了很简单的事情。非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我尝试了以下内容,它对我有用。

docker_command="docker ps | awk '/consul/{print \$1}' | tr -d '\r\n'"

线路编码似乎是个问题