У меня есть цикл while, который будет получать имена файлов и запускать команды. Довольно стандартный материал. То, что я хочу сделать, это сортировать файлы, которые я кормлю в Do While цикл, а затем в течение 1-го файла, который я хочу запустить Command1 и для остальной части их Command2Сделайте во время цикла. Сделайте исключение для первой записи и продолжайте цикл, как обычно.
find $dir -iname "$search*" |<some commands> | sort -nr
while read filename; do
# if its the very 1st file . head - 1 would do that
echo "command1 > log > 2>&1& " >> appendfile
echo "if [ $? != 0 ] then ; exit 1 fi " >> appendfile
# for all other files do this
echo "command1 > log > 2>&1& " >> appendfile
Теперь вы видите, что я делаю слишком. Я пишу материал в appendfile.ksh, который будет запущен позже. Я выбираю первый файл, который является наименьшим по размеру как «тестовый файл» для запуска команды 1. Если задание завершается аварийно, что выход еще продолжать обработку остальных файлов Я пытаюсь способом, как разместить 1-ый файл, который входит в Do While с немногими специальной обработкой
+1 но 'while read filename' должно быть' while IFS = read -r filename', если OP специально не хочет вырезать пробелы из имен файлов и интерпретировать обратные слова. –
Спасибо, Ред. Я знаю об этом, но сфокусирован на принципе «f = 1, если [..]; ((f ++))», а не корректирует/критикует метод петли OP. Я обновляю свой ответ, чтобы «плохой пример» исчез. Еще раз спасибо. –