하나의 긴 문자열 대신 구성 명령을 여러 줄로 분할할 수 있습니까?
예를 들어
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"는 다음으로 확장됩니다.상호 작용. 각 명령은 여러 번 지정할 수 있으며, 이 경우 명령은 순차적으로 실행됩니다..