Поведение команды find внутри цикла for

Сценарий init будет иметь путь. Использование ModProbe, чтобы убедиться, что ваши модули KVM загружаются в ядро, могут быть ненужными, так как они могут быть уже загружены, но если вы столкнулись с проблемами, вы всегда можете добавить его в свой скрипт.

0
17.08.2015, 19:11
3 ответа

Вы можете сделать что-то вроде:

if dirs="$(find /etc/aaa -type dir -maxdepth 1 2> /dev/null)"; then
    for dir in ${dirs}; do
        # Your code
    done
    # Your code
else
    # find failed, generate error
fi
0
28.01.2020, 04:56

Я не понимаю, почему вы хотите выйти из цикла в середине его выполнения. Я не думаю, что цикл стоит выполнять, если желаемый каталог отсутствует.

Я думаю, вам следует сделать что-то вроде:

if [ ! -d /etc/aaa ]; do
    echo "Error"
    exit 1
else
    for files in $(ls /etc/aaa); do
        # code
    done
    # more code
fi

Если это совсем не то, что вы ищете, пожалуйста, объясните, чего вы хотите достичь.

0
28.01.2020, 04:56

Думаю, проще провести логический тест перед циклом. Но это взлом n' косой черты в for-statement:

for dir in `! find /etc/aaa -type d -maxdepth 1 2>/dev/null && echo error && exit`;
do
//your code
done

//your code

Это также подавит stderr find.

0
28.01.2020, 04:56

Теги

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