![](/img/trans.png)
[英]How to set a variable to the output of a `docker-compose restart` command in Bash?
[英]Capturing output of docker-compose in variable
當我在CLI上運行docker-compose命令時,它看起來像這樣:
docker-compose up -d my-service
# Recreating my-cluster_my-service_1 ... done
但是,捕獲輸出似乎會破壞它:
foo=$(docker-compose up -d my-service 2>&1)
echo $foo # <-- this line actually vanishes!
# Recreating my-cluster_my-service_1 ... done
# ecreating my-cluster_my-service_1 ...
請注意我們必須重新定向stderr,因為出於某種原因,docker-compose輸出在那里而不是stdout。
這使得很難以編程方式處理docker-compose的輸出。 如何獲得docker-compose的正確輸出?
問題顯然是docker-compose使用控制字符來重寫打印行。 在交互式終端中,這很好(即使在這種情況下效果為零),但捕獲(並回顯)包含此類字符的流會產生意想不到的效果,就像我們上面看到的那樣。
添加選項--no-ansi
以禁止顯示這些控制字符:
$ alf=$(docker-compose --no-ansi up -d my-service 2>&1)
$ echo $alf
# Recreating my-cluster_my-service_1 ... done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.