Если вы хотите, чтобы пользователь использовал кавычки оболочки для разграничения элементов (и не только backslash
), в zsh
вы могли бы сделать:
IFS= read -r 'string?Please enter the elements: '
array=("${(@XQ)${(z)string}}")
(z)
состоит в том, чтобы разбить $string
на элементы, как это сделал бы синтаксический анализатор оболочки. Q
убрать один уровень цитирования из полученных слов X
для сообщения об ошибках в синтаксисе @
и кавычки для сохранения пустых элементов. Таким образом, пользователь может вводить такие вещи, как:
'first word' "second word" third\ word $'word\nwith\nnewline' ''
Имейте в виду, что хотя расширение не выполняется, синтаксис ожидаемого кода оболочки не ограничивается заключением в кавычки. Например, $(foo bar)
будет разобрано на одно слово $(foo bar)
, ${unclosed
вызовет синтаксическую ошибку. Пользователю нужно будет ввести их как '$(foo)' 'bar)'
или `'${unclosed'.
Команде pip
требуется имя пакета Python, а не имя пакета Ubuntu.
Попробуйте ввести командуpython3.6 -m pip install PyQt5
Вы должны увидеть доступные связанные пакеты сpython3.6 -m pip search pyqt