gpt4 book ai didi

bash - 为什么 bash 脚本的工作取决于终端窗口的大小?

转载 作者:行者123 更新时间:2023-12-02 21:23:21 24 4
gpt4 key购买 nike

我知道这听起来很奇怪,但事情就是这样。我有一个 docker 容器,它托管一个数据库。而且我有一个脚本,它试图一个接一个地执行一组补丁。现在,脚本不知道数据库端口(因为每次容器绑定(bind)到不同的端口)。所以这里是脚本的开头:

#!bin/bash

echo "Calculating the port..."
port=$(docker-compose ps | grep database-docker | sed "s/.*://g" | sed "s/\-.*//")
echo "Port is $port"

基本上它应该对 docker-compose ps 的输出使用react,输出如下:
     Name                       Command             State            Ports          
wildfly_database-docker_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32768->3306/tcp

但是,事情就是这样。如果我的终端窗口很小,则此脚本不起作用,端口变量为空。如果我以全屏方式展开终端窗口,它可以正常工作,并且可以满足我的需要。我想这是因为第一种情况下的输出被分成几行,并且无法正确解析。

那么,如何让 bash 脚本独立于窗口大小工作呢?

更新 .由于评论,我找到了解决方案。这似乎是 docker-compose 的问题。但是在我把它改成这条线之后
port=$(docker ps | grep database-docker | sed  "s/.*://g" | sed "s/\-.*//") 

一切正常。 Docker 本身不受终端大小的影响。

最佳答案

由于评论,我找到了解决方案。这似乎是 docker-compose 的问题。但是在我把它改成这条线之后

port=$(docker ps | grep database-docker | sed  "s/.*://g" | sed "s/\-.*//") 

一切正常。 Docker 本身不受终端大小的影响。

关于bash - 为什么 bash 脚本的工作取决于终端窗口的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com