используйте printf
, как упоминалось, или включите shopt xpg_echo
, что даст вам закройте стандартным echo
:
echo 'hi\nthere'
hi
there
, но он все равно некорректно обработает аргумент -E
. так что вы можете написать свои собственные небольшие стандарты, соответствующие echo
, например:
echo()
case ${IFS- } in
(\ *) printf %b\\n "$*";;
(*) IFS=\ $IFS
printf %b\\n "$*"
IFS=${IFS#?}
esac
... которые впоследствии в основном будут соответствовать Single Unix Spec echo
во всех отношениях (за исключением того, что bash
printf
также нарушает стандарт обработки \ [num] {1,3}
восьмеричных чисел для % b
) ) .
... и так ...
echo -E
-E
Проблема заключалась в том, что не был загружен нужный модуль. xt -tcpudp должен быть загружен с
insmod xt-tcpudp
, чтобы иметь возможность добавлять правила, содержащие --dport
и--sport