Сценарий должен проверить, не является ли OLD_VERSION
пустым или если он не соответствует определенному шаблону. Я попытался код ниже«или» в сценариях bash
#!/bin/bash
OLD_VERSION="ABCDEFGHIJKL"
PATTERN="ABC"
if [[ ! "$OLD_VERSION" =~ "$PATTERN" ]] || [[ ! -z "$OLD_VERSION" ]];
then
echo "Not matched or not null"
else
echo "matched or null"
fi
Для указанных входов:
bash -x re.sh
+ OLD_VERSION=ABCDEFGHIJKL
+ PATTERN=ABC
+ [[ ! -z ABCDEFGHIJKL ]]
+ echo 'Not null or doesnot match'
я получаю ниже выходной:
Not null or doesnot match
, а также, когда я делаю OLD_VERSION нуля, я получаю не нуль или doesnot match, где я ожидаю, что он будет печатать нуль.
$OLD_VERSION=""
+ PATTERN=ABC
+ OLD_VERSION=
+ [[ ! -z '' ]]
+ [[ ! '' =~ ABC ]]
+ echo 'Not null or doesnot match'
Я получаю неправильный выход. Я получаю проблемы в или. Что я делаю не так?
UPDATE:
как предложено sureshvv, я обновил это нравится:
if [[ ! "$OLD_VERSION" =~ "$PATTERN" && ! -z "${OLD_VERSION}" ]] ;
then
echo "Not null or doesnot match"
else
echo "matched or null"
fi
Спасибо всем.
определить 'неправильно output' – amdixon
вопрос обновлен @amdixon – no1
мая быть легче читать, если вы избавитесь от двойного отрицательного. Поэтому вы можете сказать, что если [-z "$ OLD_VERSION" || "$ OLD_VERSION" = ~ "$ PATTERN"]; затем эхо-сигнал нулевой или согласованный; fi – sureshvv