Это один из тех случаев, когда вы, вероятно, не хотите процитировать расширение переменной:
iptables -A MY_RULE $sflag -p tcp -m tcp ...
В качестве альтернативы и более надежно, мы можем использовать расширение ${var+...}
:
iptables -A MY_RULE ${SSH_CLIENT:+-s "${SSH_CLIENT%% *}"} -p tcp -m tcp ...
Прочитайте это как «если $SSH_CLIENT
установлено (а не ноль), то разверните и подставьте -s "${SSH_CLIENT%% *}"
, иначе ничего».
Обратите внимание, что мы не цитируем расширение $.+
, но мы цитируем отдельные аргументы в нем, где это необходимо (очевидно, -s
не нужны кавычки, хотя вы можете добавлять их, если хотите).
Я удалил команда external awk
, так как расширение $.%%
является более простым и эффективным способом усечения строки.