Я пишу сценарий bash.
Шаг 1 - Получить некоторые метаданные через curl
и записать в файл.
Шаг 2 - Проверить, не пуст ли файл.Если файл пуст, выйдите из системы «Файл пуст. Выход ...» и выйдите с кодом состояния 1. Если файл не пуст, перейдите к шагу 3.
Шаг 3 - Дальнейшая обработка файла.
Так что я пытаюсь оптимизировать Шаг 2 в одну строку.
Это то, что я пробовал до сих пор.
[ -s sp_metadata.xml ] || echo "ERROR - SP Metadata returned null. Exiting..." && exit 1
Теперь, если файл пуст, яполучить следующий результат.
touch sp_metadata.xml
sh -x ./register.sh
+ [ -s sp_metadata.xml ]
+ echo ERROR - SP Metadata returned null. Exiting...
ERROR - SP Metadata returned null. Exiting...
+ exit 1
Но когда я записываю данные в файл, я получаю
echo "Test" > sp_metadata.xml
sh -x ./register.sh
+ [ -s sp_metadata.xml ]
+ exit 1
Похоже, что каждый раз он запускается exit 1
.Я думаю, это из-за &&
.
Я пытался
[ -s sp_metadata.xml ] || echo "ERROR - SP Metadata returned null. Exiting..." ; exit 1
, а также пытался
[ -s sp_metadata.xml ] || (echo "ERROR - SP Metadata returned null. Exiting..." && exit 1)
Но это не сработало.Есть идеи, что не так с моим синтаксисом?