waitforfiles () { n=0 while [ "$n" -lt 4 ]; do set -- *File*$JulianDate.* [ "$#" -ge 12 ] && return 0 sleep 300 n=$(( n + 1 )) done return 1 } if ! waitforfiles; then echo 'Not enough files arrived in time.' >&2 exit 1 fi # Do something here.
Не разбирайте вывод
ls
, это только для вас, чтобы просмотреть . Вместо этого используйте оболочку для сопоставления имен, которые вы хотите сопоставить, а затем подсчитайте количество совпадающих файлов. Оболочка дает вам это более или менее бесплатно (по сравнению с вызовом внешних утилитls
иwc
).Вышеуказанная функция будет бездействовать в течение 300 секунд и повторять попытку, пока шаблон не совпадет с 12 или более именами файлов или пока цикл не будет выполнен четыре раза. Он возвращает успех (ноль )или отказ (не -ноль )в зависимости от того, пришли ли файлы вовремя или нет.
Связанные:
Ответ находится в настройках буфера обмена -по умолчанию было установлено копирование любого выделенного текста. Я отключил это, щелкнув правой кнопкой мыши в буфере обмена и установив Ignore Selection
.