使用 bash 脚本替换配置文件变量
Replace config file variables using bash script
我试图将一个值附加到 ssh 配置文件,但如果指定两个不同的值,它似乎不起作用,它读取第一个而不是第二个。
这似乎是明智的,而不是尝试重新写入整个文件,只修改值。
当前值为:
Port 22
我要进去把值改成:
Port 222
我能想到的最好的是:
sed -c -i "s/\(Port *= *\).*/$REPLACEMENT_VALUE/" /etc/ssh/sshd_config
但是我知道这是不对的,因为它的工作方式是期望在值和变量之间有一个等号。
我需要脚本来做这样的事情:
- 查找变量(即端口)
- 把这条线换成我自己的线
我想你是这个意思,
sed 's/.*\bPort\b.*/REPLACEMENT_VALUE/' file
示例:
$ REPLACEMENT_VALUE="Port 222"
$ echo -e "foo\nPort 22" | sed "s/.*\bPort\b.*/$REPLACEMENT_VALUE/"
foo
Port 222
我试图将一个值附加到 ssh 配置文件,但如果指定两个不同的值,它似乎不起作用,它读取第一个而不是第二个。
这似乎是明智的,而不是尝试重新写入整个文件,只修改值。
当前值为:
Port 22
我要进去把值改成:
Port 222
我能想到的最好的是:
sed -c -i "s/\(Port *= *\).*/$REPLACEMENT_VALUE/" /etc/ssh/sshd_config
但是我知道这是不对的,因为它的工作方式是期望在值和变量之间有一个等号。
我需要脚本来做这样的事情:
- 查找变量(即端口)
- 把这条线换成我自己的线
我想你是这个意思,
sed 's/.*\bPort\b.*/REPLACEMENT_VALUE/' file
示例:
$ REPLACEMENT_VALUE="Port 222"
$ echo -e "foo\nPort 22" | sed "s/.*\bPort\b.*/$REPLACEMENT_VALUE/"
foo
Port 222