是否可以将配置命令拆分为多行而不是一个长字符串?
例如
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
当使用更多命令时,该行会变得很长且难以阅读。我想将其拆分,以便每个命令可以使用一行。就像是:
PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
手册页说它基于 ini 格式,但对此主题没有任何帮助。
该wg-quick
命令是一个bash 脚本。PostUp
使用循环读取键(例如键)read -r
可以防止使用\\
\n 来分隔行。但阅读同一个脚本表明:
\n\nRun Code Online (Sandbox Code Playgroud)\nPOST_UP=( )\n
将其声明为数组,并且:
\n\n\nRun Code Online (Sandbox Code Playgroud)\nPostUp) POST_UP+=( "$value" ); continue ;;\n
向数组添加一个元素。
\neval
然后稍后执行(函数中有一个命令execute_hooks
):
\n\nRun Code Online (Sandbox Code Playgroud)\nexecute_hooks "${POST_UP[@]}"\n
因此,可以通过多次使用相同的按键输入来分割多个命令(但不是任意行)。所以OP的例子会像这样工作:
\nPostUp = iptables -A FORWARD -i %i -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n实际上手册页已经告诉了它:
\n\n\n\xe2\x80\xa2 PreUp、PostUp、PreDown、PostDown \xe2\x80\x94 脚本片段将由 bash(1) 在设置/拆除界面之前/之后\n执行,最常用于配置自定义 DNS选项或\n防火墙规则。特殊字符串“%i\”被扩展为INTERFACE。\n每个字符串都可以被指定多次,在这种情况下,命令将按顺序执行。
\n