簡體   English   中英

在變量中捕獲docker-compose的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM