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
はバッシュスクリプト。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" は次に展開されます。相互作用。 各コマンドは複数回指定できます。この場合、コマンドは順次実行されます。。