Shell脚本替换问题

显示名称

我有一个名为的文本文件a.txt,其内容如下:-

档案内容:

DOMAIN_PRODUCTION = "https://example.com";
DOMAIN_A = "https://example-A.com";
DOMAIN_B = "https://example-B.com";
DOMAIN_LOCAL = "http://127.0.0.1:3000";
DOMAIN = DOMAIN_A

我想sed根据某些条件命令替换某些东西当我1if语句中仅使用行时,我能够成功完成此操作,但是,当条件为true时,当我使用多于1一行时,它仅执行else语句。

我的脚本如下所示:-

env=LOCAL
ip=http://127.1.1.2:3000
if [ $env == LOCAL ]
then
   sed 's~DOMAIN_LOCAL = .*$~DOMAIN_LOCAL = "'"$ip"'";~' a.txt
   sed 's~DOMAIN = .*$~DOMAIN = '"$env"'~' a.txt
   #  If I comment the above line, my if loop executes, but If I don't, it doesn't execute if statement, though the condition is correct.
else
   sed 's~DOMAIN = .*$~DOMAIN = '"$env"'~' a.txt
fi

输出应该是这样的:

DOMAIN_PRODUCTION = "https://example.com";
DOMAIN_A = "https://example-A.com";
DOMAIN_B = "https://example-B.com";
DOMAIN_LOCAL = "http://127.1.1.2:3000"; # Changed here
DOMAIN = DOMAIN_LOCAL # Changed here

理想情况下,它应该替换DOMAIN_LOCALand的值,DOMAIN但是当我在if循环中使用两个语句时,它不会执行。

我究竟做错了什么?

cb0

您的命令似乎可以找到。您的sed命令的问题在于它们只会执行echo您需要替换文件中的更改。

#!/bin/bash

env=LOCAL
ip=http://127.1.1.2:3000
if [ $env == LOCAL ]
then
   sed -i.bak 's~DOMAIN_LOCAL = .*$~DOMAIN_LOCAL = "'$ip'";~' a.txt
   sed -i.bak 's~DOMAIN = .*$~DOMAIN = '"$env"'~' a.txt
   #  Now this will make a backuo of the original file and write changes back to a.txt
else
   sed 's~DOMAIN = .*$~DOMAIN = '"$env"'~' a.txt
fi

这将在“ a.txt”中进行所需的更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章