Выполнять операцию в bash только если переменная меньше второй переменной [закрыто]

Возможно, ваша команда выводит на стандартный вывод вместо стандартного вывода. Чтобы перенаправить stderr на stdout:

sudo /usr/local/nginx/sbin/nginx -t 2>&1 | sed -e '$!d'

Если вам нужна только последняя строка вывода, вы также можете использовать tail -n 1вместо sed.

0
23.07.2016, 15:28
2 ответа

Ну, я исправил опечатку, которая определенно нарушала программу, и исправил синтаксис оператора, также определенно нарушающий ее. Однако (и это может показаться смешным), как только я исправил эти проблемы, я выполнил valid=${#validCheck} операцию вручную, чтобы проверить длину строки на всякий случай, и обнаружил, что длина каталога на самом деле 45 символов, а не 46. Сейчас я чувствую себя дураком, но я рад, что проблема решена и я могу перейти к более важным функциям. Спасибо вам обоим за исправления моих опечаток и спасибо Ричарду за предложение инструментов chroot jail.

0
28.01.2020, 02:27

Чтобы кратко ответить на вопрос, поставленный в заголовке:

if [[ "$foo" -lt "$bar" ]]; then
    echo "$foo is less than $bar"
fi

Тесты для целочисленных сравнений:

 n1 -eq n2     True if the integers n1 and n2 are algebraically equal.

 n1 -ne n2     True if the integers n1 and n2 are not algebraically equal.

 n1 -gt n2     True if the integer n1 is algebraically greater than the
               integer n2.

 n1 -ge n2     True if the integer n1 is algebraically greater than or
               equal to the integer n2.

 n1 -lt n2     True if the integer n1 is algebraically less than the inte-
               ger n2.

 n1 -le n2     True if the integer n1 is algebraically less than or equal
               to the integer n2.

Использование e. грамм. < или > выполняет сравнение порядка ASCII, поэтому [[0100 <100]] будет истинным.

3
28.01.2020, 02:27

Теги

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