Проблема в том, что вы не заключаете переменную в кавычки внутри условия if
. Вы должны сделать это следующим образом:
if [ -n "$VMID" ]
Вы можете спросить, почему, если вы не цитируете, вы сталкиваетесь с проблемами. Ответ находится в тесте человека :
-n СТРОКА
длина СТРОКИ отлична от нуля
СТРОКА
эквивалентно -n СТРОКА
Поэтому, когда VMID
пусто, условие if
приводит к следующему:
if [ -n ]
и test
предполагают, что вы хотите проверить, является ли -n
пустой строкой. Не поймет, что вы использовали -n
в качестве опции. Итак, -n
не пуст и тест проходит.
Если вы используете цитату, test
поймет, что вы хотите.
Если я могу добавить предложение, не используйте обратные кавычки для подстановки команд. Вместо этого используйте $(./run_prog)
. Отметьте этот ответ , если вам нужна дополнительная информация.