我有一个名为的文本文件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
根据某些条件用命令替换某些东西。当我1
在if
语句中仅使用行时,我能够成功完成此操作,但是,当条件为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_LOCAL
and的值,DOMAIN
但是当我在if
循环中使用两个语句时,它不会执行。
我究竟做错了什么?
您的命令似乎可以找到。您的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] 删除。
我来说两句