Podman не может убивать контейнеры :не работает, но указывает неправильно

Ключевым моментом является то, что пробелы разделяют слова , если они не заключены в кавычки, а слова — это то, о чем вам нужно подумать:

Basically, the shell does the following:

  1. Reads its input [...]
  2. Breaks the input into words and operators, obeying the quoting rules described in Quoting. These tokens are separated by metacharacters. [...]
  3. Parses the tokens into simple and compound commands (see Shell Commands).

- 3.1.1 Shell Operation

И:

A simple command is the kind of command encountered most often. It’s just a sequence of words separated by blanks, terminated by one of the shell’s control operators[.] - 3.2.1 Simple Commands

И:

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.
  2. The words that are not variable assignments or redirections are expanded [...]. If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments.

- 3.7.1 Simple Command Expansion

Обратите внимание, что здесь написано «слова, [...] помеченные как присвоения переменных». Таким образом, присваивание переменной должно состоять из одного слова, поэтому следующие просто присваивания переменной:

  • var=value
  • var=" value"

Но следующее не является:

  • var= value✗ (два слова :назначение переменнойvar=-назначение пустой строки -для командыvalue)
  • var =value✗ (два слова :команда varс аргументом=value)
  • var" =value"✗ (одно слово :, но имена переменных нельзя заключать в кавычки, так что это команда с именемvar =value)
  • "var=value"✗ (одно слово :, но имена переменных нельзя заключать в кавычки, так что это команда с именемvar=value)

Теперь для [ var = value ], [есть команда (та же команда, что и test), которая ожидает проверки и операнды для проверки как отдельные аргументы . Таким образом, вы можете делать такие вещи, как [ "$var" = "$value" ]или test "$var" = "$value", где, например, var="a = b"и value="b = c"могут содержать вещи, которые выглядят как тесты, но таковыми не являются, потому что каждый из них является одним аргументом.

Поскольку аргументы должны быть отдельными словами, вокруг =необходимы пробелы. И именно поэтому "$var"и "$value"пришлось цитировать,в противном случае оболочка разбила бы их на отдельные слова, и [не удалось бы выполнить.

0
15.11.2020, 08:43
2 ответа

Я предполагаю, что это ошибка, потому что контейнеры, которые не запущены, не должны быть нацелены наpodman kill -a

Мне удалось избавиться от этих контейнеров, запустив

podman container rm -fa
1
18.03.2021, 22:49

Я смог исправить это, выполнив следующие действия:

  1. в сообщении об ошибке будет указано... уже используется [длинный идентификатор]. Скопируйте этот идентификатор.
  2. тип перезапуска podman [ID]
  3. Введите podman kill -a для уничтожения всех (теперь это должно работать )или используйте команду для уничтожения определенного контейнера.
0
22.04.2021, 16:50

Теги

Похожие вопросы