gpt4 book ai didi

linux - 在我的配置文件中增加我的服务器端口

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:47 25 4
gpt4 key购买 nike

我想制作一个 Bash 脚本,如果我运行我的脚本,它会在我的配置文件中每次使用 +1 增加我的服务器端口选项。我的配置文件如下所示。

server-port=1000
server-online=true
level-name=Hapos
type=XZC

举个例子,它需要如何工作

# ./script.sh
we will now change the port
# cat config.txt
1001
-----------------
# ./script.sh
we will now change the port
# cat config.txt
1002
-----------------
# ./script.sh
we will now change the port
# cat config.txt
1003

最佳答案

用awk自增

让我们从这个配置文件开始:

$ cat config.txt 
server-port=1000
server-online=true
level-name=Hapos
type=XZC

我们可以使用 awk 增加端口:

$ awk -F= -v OFS== '$1 == "server-port"{$2++} 1' config.txt 
server-port=1001
server-online=true
level-name=Hapos
type=XZC

代码的工作原理如下:

  • -F= 将输入的字段分隔符设置为 =

  • -v OFS== 将输出的字段分隔符设置为 =

  • $1 == "server-port"{$2++} 测试第一个字段是否为 server-port。如果是,它会增加第二个字段。

  • 1 是 awk 的 print-the-line 的神秘简写。

使用现代 (>=4.1.0) GNU awk 就地更改

$ awk -i inplace -F= -v OFS== '$1 == "server-port"{$2++} 1' config.txt 
$ cat config.txt
server-port=1001
server-online=true
level-name=Hapos
type=XZC
$ awk -i inplace -F= -v OFS== '$1 == "server-port"{$2++} 1' config.txt
$ cat config.txt
server-port=1002
server-online=true
level-name=Hapos
type=XZC

与其他 awks 就地改变

$ awk -F= -v OFS== '$1 == "server-port"{$2++} 1' config.txt >tmp$$ && mv tmp$$ config.txt
$ cat config.txt
server-port=1003
server-online=true
level-name=Hapos
type=XZC

替代输入文件

假设我们的文件有一个破折号,上面的破折号有一个等号:

$ cat config.txt
server-port-1000
server-online=true
level-name-Hapos
type=XZC

使用 GNU awk,我们可以增加端口号:

awk -i inplace -F- -v OFS=- '/^server-port-/{$NF++} 1' config.txt 

这会生成新文件:

$ cat config.txt
server-port-1001
server-online=true
level-name-Hapos
type=XZC

使用最新的 GNU awk 以外的 awk:

$ awk -F- -v OFS=- '/^server-port-/{$NF++} 1' config.txt >tmp$$ && mv tmp$$ config.txt
$ cat config.txt
server-port-1002
server-online=true
level-name-Hapos
type=XZC

非 GNU 解决方案的安全和临时文件说明

使用非 GNU awk 就地更新需要创建一个临时文件。将临时文件放在 /tmp 中是很常见的,但这是一个安全风险:其他用户可以写入此目录,从而使竞争条件成为可能。通过使用诸如 mktemp 之类的实用程序可以将这种危险降至最低,该实用程序会生成难以猜测的文件名。更好的解决方案是将 tmp 文件放在只有用户具有写入权限的目录中。这可以是主目录。

在上面,tmp文件和config.txt文件放在同一个目录下。这个目录很可能是安全的,因为它是 config.txt 所在的位置。如果不是,则应采取措施。

有关此问题的更多信息,请参阅 Greg's FAQ 062 .

关于linux - 在我的配置文件中增加我的服务器端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887802/

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