Невозможно выполнить условие If в сценарии оболочки - PullRequest
0 голосов
/ 26 ноября 2018

Мне нужно проверить, существует ли уже контейнер с конкретным именем.Используя оператор if для того же, однако контейнер присутствует с тем же именем, но я не уверен, почему, если оператор не выполняется успешно.

if [`echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1`]
then
statements
else
statements

контейнер с именем теста присутствует, но он всегда идет внутри оператора else.Не могли бы вы помочь мне в этом.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

в дополнение к информации @ ARHARA Kazutaka.

-all не существует, вместо этого попробуйте --all.

Опции --quiet --filter name=test будут выдавать docker фильтрыиспользуя имя контейнера, и выведите его на стандартный вывод CONTAINER ID, если контейнер существует.

Попробуйте сделать следующее:

container_name=test

container_id=$(echo password | sudo -S docker ps --all --quiet --filter name="${container_name}")

if [ ! -z "${container_id}" ] ; then
  printf "%s is the id of the container with name '%s'\n" "${container_id}" "${container_name}"
else
  printf "no docker container with name '%s' has been found.\n" "${container_name}"
fi
0 голосов
/ 26 ноября 2018

Вам нужны пробелы между [, ] и `, то есть:

if [ `echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1` ]

Также вам нужно fi после последней строки.

...