Как лучше перезаписать новый параметр в файле конфигурации

Насколько я могу судить, ваш сценарий действительно вышел; просто подстановка процесса завершилась и печаталась в фоновом режиме после того, как внешняя оболочка напечатала свое приглашение.

Чтобы избежать этого, можно было бы просто передать вашу функцию вместо использования> >(...):

( echo; echo; echo 'du results:'; exit 0 ) | handle_json foo

Это работает, потому что при записи cmd1 | cmd2две команды запускаются параллельно, при этом стандартный вывод cmd1подключен к стандартному вводу cmd2, и bash ожидает обе команды. завершить, чтобы считать конвейер завершенным.

Напротив, cmd1 > >(cmd2)делает почти то же самое, за исключением того, что bash не ждет завершения cmd2, прежде чем продолжить дальнейшие команды (в этом случае, печатая «масштабирование» и затем выходя,позволяя интерактивному bash напечатать свое приглашение ):, если случайно cmd2занимает значительно больше времени, чем cmd1, тогда происходит неожиданное состояние гонки, которое вы наблюдали.

-3
12.03.2021, 13:25
2 ответа
perl -spi -e 's/JENKINS_PORT="8080"/JENKINS_PORT="8000"/' config.file
-1
18.03.2021, 22:25
 awk -F "=" '{OFS="="}/JENKINS_PORT/ && $NF ~ /8080/{gsub ("8080","8000",$NF)}1'  filename >temp.txt && mv temp.txt  filename



sed '/JENKINS_PORT="8080"/s/JENKINS_PORT="8080"/JENKINS_PORT="8000"/g' filename

выход

Питон

#!/usr/bin/python
import subprocess
import re
z=re.compile(r'JENKINS_PORT')
m=open('filename','r')
for k in m:
    if re.search(z,k):
        p=k.split('=')
        if re.search("8080",p[-1]):
            h=re.sub("8080","8000",p[-1])
         
            print "{0}={1}".format("".join(p[0:-1]),h.strip())
    else:
        print k.strip()
0
18.03.2021, 22:25

Теги

Похожие вопросы