Что проверяет этот конкретный оператор сценария оболочки?
Я не хороший эксперт по Shell Script. Может ли кто-нибудь помочь мне понять и объяснить утверждение [ ! -z ${TRUE:-} ] && [ ${TRUE:-} == 'true' ] &&
из следующего фрагмента. Что делает и / или проверяет это конкретное утверждение?
Однако я могу понять это утверждение: TRUE=$($JBOSS_TWIDDLE get jboss.system:type=Server Started |grep Started |cut -d"=" -f2)
, Это в основном вызывает инструмент командной строки JMoss JMX для проверки состояния запуска сервера.
Фрагмент кода:
while [ $i -lt 180 ]; do
TRUE=$($JBOSS_TWIDDLE get jboss.system:type=Server Started |grep Started |cut -d"=" -f2)
[ ! -z ${TRUE:-} ] && [ ${TRUE:-} == 'true' ] && {
echo "The $JBOSS_NAME server is up and running."
return
}
2 ответа
Как указывают @drew-khoury и @ramruma, [ -z ...
тест лишний.
С помощью TRUE
поскольку имя переменной просто добавляет путаницы.
Фактический вопрос, на который пытается ответить фрагмент: twiddle.sh
Распечатать Started=true
? Или, в оболочке говорят:
jboss_is_started() {
($JBOSS_TWIDDLE get jboss.system:type=Server Started |
grep 'Started=true' | read)
}
grep ... | read
Конструкция вернет истину, если grep был успешным, при отбрасывании вывода.
if jboss_is_started; then
echo "The $JBOSS_NAME server is up and running."
return
fi
Сложные меры предосторожности против пустого $TRUE не нужны, если используются двойные кавычки.
[ "$TRUE" = 'true' ]
-Z проверяет, не является ли $TRUE не пустым, и:- ничего не подставляет, если оно не установлено. Это все ненужно. Возможно, это протест против чрезмерно предписывающего стандарта кодирования.