Цикл с условием продолжения, чтобы протестировать, если файл существует в ударе

Я читал, что у вас есть c # background. Поэтому хорошей отправной точкой может быть реализация mixin для .NET.

Возможно, вы захотите проверить проект codeplex в http://remix.codeplex.com/

Просмотрите ссылку lang.net Symposium, чтобы получить обзор. Еще есть информация о документации на странице Codeplex.

рассматривает Stefan

83
задан Zenet 4 March 2010 в 14:09
поделиться

4 ответа

Когда вы говорите "не работает", откуда вы знаете, что он не работает?

Вы можете попытаться выяснить, существует ли файл на самом деле, добавив:

while [ ! -f /tmp/list.txt ]
do
  sleep 2 # or less like 0.2
done
ls -l /tmp/list.txt

Вы также можете убедиться, что используете оболочку Bash (или родственную), набрав 'echo $SHELL'. Я думаю, что CSH и TCSH используют немного другую семантику для этого цикла.

126
ответ дан 24 November 2019 в 08:49
поделиться

Вот версия с тайм-аут так, чтобы после количества времени цикл закончился ошибкой:

# After 60 seconds the loop will exit
timeout=60

while [ ! -f /tmp/list.txt ];
do
  # When the timeout is equal to zero, show an error and leave the loop.
  if [ "$timeout" == 0 ]; then
    echo "ERROR: Timeout while waiting for the file /tmp/list.txt."
    exit 1
  fi

  sleep 1

  # Decrease the timeout of one
  ((timeout--))
done
0
ответ дан 24 November 2019 в 08:49
поделиться

работы с ударом и sh оба:

touch /tmp/testfile
sleep 10 && rm /tmp/testfile &
until ! [ -f /tmp/testfile ]
do
   echo "testfile still exist..."
   sleep 1
done
echo "now testfile is deleted.."
0
ответ дан 24 November 2019 в 08:49
поделиться

сделать так

while true
do
  [ -f /tmp/list.txt ] && break
  sleep 2
done
ls -l /tmp/list.txt
-3
ответ дан 24 November 2019 в 08:49
поделиться