LINUX.ORG.RU

Код возврата от нескольких команд

 


0

2

Здравствуйте, мне необходимо в скрипте проверить что ряд действий выполнился корректно. Думал, что такой код зайдет:

if {
    cat /root/Desktop/1.txt
    cat /root/Desktop/2.txt
}; then
    echo YES
else
    echo NO
fi

Но он не отработал корректно. Отработал такой:

if {
    cat /root/Desktop/1.txt &&
    cat /root/Desktop/22.txt
}; then
    echo YES
else
    echo NO
fi

И еще такой:

cat /root/Desktop/1.txt &&
cat /root/Desktop/22.txt
if [[ $? == 0 ]]; then
    echo YES
else
    echo NO
fi

Есть ли какой-то общепринятый способ реализовать такое? Или способ красивее моих


Можно, например, установить set -e — тогда выполнение будет прерываться после первой команды, выполненной с ненулевым статусом.

А в приведенных примерах с катами первый отличается от следующих. При && вторая команда cat просто не выполнится.

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

Мне нужно просто создать bash скрипт с автонастройкой системы, при этом логгируя успешно прошло та или иная настройка или нет в терминал.

Мне кажется такой способо это не то, что мне нужно

NordeN
() автор топика

(false && true) && echo yes || echo no однострочник тебе поиграть

и настойчивое пожелание пойти читать талмуд по башу

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)

Вот так нормально, и незачем туда мусорные переводы строк вставлять.

if cat /root/Desktop/1.txt && cat /root/Desktop/22.txt; then
    echo YES
else
    echo NO
fi

firkax ★★★★★
()

А что мешает использовать «cat file1 file2»?

ComradeDOS
()
Ответ на: комментарий от NordeN

а почему не какой-нибудь анзибль-рецепт? сможешь настроить и тоньше и меньше думать об обработке всех этих багов..

Avial ★★★★★
()
Ответ на: комментарий от Avial

Судя по всему речь идёт про какой-то контейнер. Для таких кейсов ansible избыточен, кмк.

ComradeDOS
()
Ответ на: комментарий от NordeN

Мне нужно просто

… научится четко ставить вопрос

  1. set -e
  2. tee
x905 ★★★★★
()
cat /root/Desktop/1.txt
rc1="$?"
cat /root/Desktop/22.txt
rc2="$?"
if [[ "$rc1$rc2" == 00 ]]; then
    echo YES
else
    echo NO
fi
teod0r ★★★★★
()

Я у себя в одном проекте видел формирование массива из кодов ответов и обработку. Оказывается, так можно. В понедельник посмотрю.

targitaj ★★★★★
()
Ответ на: комментарий от NordeN

Ещё есть такая штука как

trap
Попробуй, может это твой случай.

targitaj ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.