構成コマンドを 1 つの長い文字列ではなく、複数の行に分割することは可能ですか?
例えば
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
より多くのコマンドを使用すると、行が非常に長くなり、読みにくくなります。コマンドごとに 1 行を使用できるように分割したいと思います。次のようになります。
PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
マニュアル ページには、ini 形式に基づいていると書かれていますが、このトピックに関するヘルプはありません。
答え1
コマンドwg-quick
はbashスクリプト. キー (キーなどPostUp
) を読み取るループでは が使用されておりread -r
、行を区切るために が使用されないようにしています\
。しかし、この同じスクリプトを読むと、次のようになります。
POST_UP=( )
配列として宣言し、
PostUp) POST_UP+=( "$value" ); continue ;;
配列に要素を追加します。
その後、次のように実行されます (eval
関数内にコマンドがありますexecute_hooks
)。
execute_hooks "${POST_UP[@]}"
このように分割できる複数のコマンド(だがしかし任意の線) は、同じキー入力を複数回使用することで実現できます。したがって、OP の例は次のようになります。
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
実はマニュアルページすでに次のように語っています。
• PreUp、PostUp、PreDown、PostDown — インターフェースの設定/解除の前後にbash(1)によって実行されるスクリプトスニペット。カスタムDNSオプションやファイアウォールルールの設定に最もよく使用されます。特殊文字列`%i'は次のように展開されます。インターフェース。 それぞれ複数回指定することができ、その場合コマンドは順番に実行されます。。