Я думаю, что Вы просто смущены поврежденной пунктуацией на той странице. _
и [
остатки некоторой разметки, они не часть iptables
синтаксис. Также |
символ не может использоваться для разделения дюйм/с, необходимо использовать ,
(запятая).
/sbin/iptables -t nat -A OUTPUT -p tcp -d 54.224.121.116,54.224.121.116 --dport 80 -j REDIRECT --to-port 8080
Как и другие, вы не должны использовать -NE
целочисленное сравнение целочисленного сравнения, чтобы сравнить строки - скорее вам следует использовать = /! =
в Тест
[
кронштейны ]
. Тем не менее, даже, даже это хрупко в лучшем случае - строки должны совпадать точно, а »
делает равным »
. Часто лучше обрабатывать в футляре
S в том контексте:
set --
while read word
case $?$#$word in
($?$#[Nn][Ee][Xx][Tt]) ! :;;
([!0]*|05*) ! break ;;esac
do set '' "$@"
done
приводили значение по умолчанию для $ ifs
(что стоит посмотреть, если вы планируете делать Shell
S) , который должен работать для любого верхнего / нижнего значения следующего
(если вам это требуется) , и сохраните петлю с бегом без конца.
Использование ! =
вместо -NE
echo -e "Please type next to continue."
read word
while [ "$word" != "next" ]
do
read word
done
Проверьте это для сравнения операторов. http://tldp.org/howto/bash-prog-intro-howto-11.html
Вы используете неправильный оператор сравнения. Вы должны использовать «! =» Для строки и «-на» для целых чисел следующим образом:
#Beginning of code
echo -e "Please type next to continue."
read word
while [ "$word" != "next" ]
do
read word
done
#the rest of the code
Оформить заказ Эта страница: Advanced Bash
Сценарии: Сравнительные операции
Я думаю, вы хотите:
echo 'Please type "next" to continue.'
while read word && [ "$word" != next ]; do
: something in the loop if needed
done
Это хорошая идея, чтобы также проверить конец файла на stdin (здесь Проверяя статус выхода из Читать
).