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

Учитывая, что файл отсортирован по второму и четвертому полям, строки, которые необходимо пронумеровать последовательно, идут последовательно. Итак, обработайте файл построчно. Если строка находится в той же последовательности, что и предыдущая, увеличьте порядковый номер, в противном случае сбросьте порядковый номер на 1.

awk -F, '{
    if ($2 FS $4 == previous) i++; else i=1;
    sub(/^[^,]*/, i);
    print;
    previous = $2 FS $4;
}'
0
16.06.2019, 22:48
2 ответа

У вас есть четыре возможности :файл a существует, а файл b нет, и наоборот, оба файла существуют или ни один из них. Вы только что контролировали первую возможность, но не остальные три. Но, как вы заявили, вы хотите что-то сделать, если оба файла существуют , поэтому вы должны это контролировать.

 while true; do
    if [[ ! -f "Test.FChk" && -f "run.log" ]]; then
        echo "Checking job status..."
        sleep 5
        printf "Calculation failed, script ended"
        return
    # here you control if both files exist
    elif [[ -f "Test.FChk" && -f "run.log" ]]; then 
        break # break the loop, the next code will continue
    fi 
    ### this will just stop the loop at the first iteration!
    break ### not something you need
    ###
done
0
28.01.2020, 03:35

Это решение продолжает работать до тех пор, пока не появится хотя бы run.log, и завершает сценарий, если Test.FChkотсутствует. Если присутствуют оба файла, сценарий продолжается.

#!/bin/bash

while true; do
    if [ -f "run.log" ]; then
        if [ -f "Test.FChk" ]; then
            # calculation finished, break loop
            break
        fi
        echo "Calculation failed, exiting." >&2
        exit 1
    fi
    echo "Checking job status..."
    sleep 5
done

echo "Calculation successfully finished!"
# do something
0
28.01.2020, 03:35

Теги

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