Что назначается переменной, если 'grep' ничего не возвращает? - PullRequest
1 голос
/ 05 марта 2019

Я хочу проверить, существует ли объект, и если он уже существует, тогда я хочу удалить объект перед его воссозданием.

Мне это нужно для обработки эмуляторов Android во время процесса сборки, но похоже, что я не могу присвоить результат 'grep' переменной, если ничего не найдено ...?

Вот мой (не работающий) пример:

echo "# --> use avdmanager"

# delete existing avd if available
test_avd=$(android list avd | grep test)
if [ ! -z $test_avd ]
  then
    echo "# --> delete old avd"
    avdmanager delete avd -n "test"
fi

# create new avd

Сценарии останавливаются после test_avd=$(.....), если grep не может найти что-либо без ошибок. Даже если я добавлю кавычки вроде test_avd="$(...)", это все равно ...: (

Эта версия отлично работает, но я не знаю почему. Может быть, у кого-то есть какие-либо предложения?

echo "# --> use avdmanager"

# delete existing avd if available
if [ ! -z "$(avdmanager list avd | grep test)" ] 
  then
    echo "# --> delete old avd"
    avdmanager delete avd -n "test"
fi

# create new avd

1 Ответ

1 голос
/ 05 марта 2019

Если grep ничего не возвращает, переменная $test_avd будет пустой.Но здесь переменная не нужна.

Вместо этого:

test_avd=$(android list avd | grep test)
if [ ! -z $test_avd ]

Используйте это:

if android list avd | grep -q test

Примечание: когда переменные необходимы, ! -z также не нужен;[ "$test_avd" ] возвращает точно такой же результат, как и [ ! -z $test_avd ].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...