Если Вы хотите подготовить команду к выполнению в той же оболочке, используйте функцию.
cmd () {
for x in $(my_command | grep keyword | cut -d" " -f1); do
command2 "arguments" $x
done
}
while true; do cmd; sleep 1; done
Возможно, ТРАВА GIS предопределяет переменную, названную "днем"?
Код не работает в прямом ударе между прочим. Вы на самом деле не увеличиваете значение "дня".
#!/bin/bash
for (( day=5; day<367; day=day+5 )); do
# commands that I've tested without a loop.
echo $day
done
exit 0
Это работает на меня, удар 2.05b на сервере RHEL 5.0.
Это сообщение об ошибке прибывает из пепла. Существует несколько оболочек с подобным синтаксисом. Пепел является относительно основным, разработанным для небольшого объема потребляемой памяти и быстрого выполнения. Другая общая оболочка является Bash. Bash имеет больше функций. Синтаксис, который Вы отправили, существует только в ударе (и некоторые другие оболочки, но не пепел).
В пепле необходимо было бы записать ¹:
day=5
while [ $day -lt 367 ]; do
…
day=$((day + 5))
done
Обратите внимание на это в зависимости от дистрибутива Linux, /bin/sh
или пепел или удар (несколько экзотических могут использовать другие реализации). Если Вы пишете сценарий, который использует синтаксис удара, несомненно, поместят #!/bin/bash
наверху.
¹ Принятие Вас означал day+=5
где Вы записали day+5
, иначе это - бесконечный цикл.
day+=5
– glenn jackman 16.05.2012, 21:41#!/bin/sh
наверху сценария, как в примерах на ТРАВЕ Wiki, а не#!/bin/bash
. Это и день использования + = 5, делают это. – dericke 17.05.2012, 02:38