Почему делает это постепенное увеличение для возврата цикла плохая переменная?

Если Вы хотите подготовить команду к выполнению в той же оболочке, используйте функцию.

cmd () {
  for x in $(my_command | grep keyword | cut -d" " -f1); do
    command2 "arguments" $x
  done
}
while true; do cmd; sleep 1; done
0
17.05.2012, 07:17
2 ответа

Возможно, ТРАВА 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.

2
28.01.2020, 02:14
  • 1
    , может также использовать day+=5 –  glenn jackman 16.05.2012, 21:41
  • 2
    OT: @glenn jackman колотят 2.05b? Это - выпуск с 2003. Так или иначе sniplet действительно работает над 4,2 также. –  jippie 16.05.2012, 22:22
  • 3
    Похоже, что проблема, возможно, использовала #!/bin/sh наверху сценария, как в примерах на ТРАВЕ Wiki, а не #!/bin/bash. Это и день использования + = 5, делают это. –  dericke 17.05.2012, 02:38

Это сообщение об ошибке прибывает из пепла. Существует несколько оболочек с подобным синтаксисом. Пепел является относительно основным, разработанным для небольшого объема потребляемой памяти и быстрого выполнения. Другая общая оболочка является Bash. Bash имеет больше функций. Синтаксис, который Вы отправили, существует только в ударе (и некоторые другие оболочки, но не пепел).

В пепле необходимо было бы записать ¹:

day=5
while [ $day -lt 367 ]; do
  …
  day=$((day + 5))
done

Обратите внимание на это в зависимости от дистрибутива Linux, /bin/sh или пепел или удар (несколько экзотических могут использовать другие реализации). Если Вы пишете сценарий, который использует синтаксис удара, несомненно, поместят #!/bin/bash наверху.

¹ Принятие Вас означал day+=5 где Вы записали day+5, иначе это - бесконечный цикл.

5
28.01.2020, 02:14
  • 1
    Для этого случая я решил придерживаться решения для удара, данного Bruce, но Ваш ответ был также очень полезен. Вы оба поймали мою путаницу пепла/Bash. –  dericke 30.05.2012, 21:29

Теги

Похожие вопросы