是否可以將設定命令拆分為多行而不是一個長字串?
例如
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
當使用更多命令時,該行會變得很長且難以閱讀。我想將其拆分,以便每個命令可以使用一行。就像是:
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”擴展為介面。 每個命令可以被指定多次,在這種情況下命令將按順序執行。