하나의 긴 문자열 대신 구성 명령을 여러 줄로 분할할 수 있습니까?
예:
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
은배쉬 스크립트. 루프 읽기 키(예: 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'는 다음으로 확장됩니다.상호 작용. 각각은 여러 번 지정할 수 있으며, 이 경우 명령은 순서대로 실행됩니다..