#zsh
#zsh
Вопрос:
У меня есть скрипт на удаленной машине. Я подключаюсь к SSH и вызываю его с помощью zsh my-script.sh
:
#!/bin/zsh
# Load some environment variables
source $HOME/.extra
send_notification() {
$HOME/bin/hass-cli service call notify.alec --arguments title="$1",message="$2"
}
# THIS WORKS
send_notification "My-Title" "My-description."
# THIS DOESN'T WORK
send_notification "My Title" "My description."
Как вы можете видеть из комментариев, когда в строке есть пробел, когда я передаю ее send_notification
функции, они не экранируются должным образом, и я получаю следующую ошибку от hass-cli
:
Error: Got unexpected extra arguments (My Title,message=My description.)
Когда в строках нет пробелов, все работает нормально. Есть идеи, как я могу правильно избежать этих пробелов?
Ответ №1:
Всегда передаются два аргумента send_notification
, и функция передает аргументы в hass-cli . На самом деле, кавычки вокруг $1
и $2
являются избыточными, поскольку вы используете zsh, но они не вредят.
Следовательно, ошибка должна быть в hass-cli
программе. Возможно, аргументы обрабатываются неправильно, поэтому вам нужно это исправить.
Комментарии:
1. Спасибо, да, я открыл проблему: github.com/home-assistant-ecosystem/home-assistant-cli/issues /…
Ответ №2:
В кодированном виде команда становится:
hass-cli service call notify.alec --arguments title=My Title,message=My description.
Одним из простых решений было бы заключить ссылки на переменные в одинарные кавычки (внутри двойных кавычек), например:
hass-cli service call notify.alec --arguments title="'$1'",message="'$2'"
Таким образом, вызов становится:
hass-cli service call notify.alec --arguments title='My Title',message='My description.'
Предполагается, что одинарные кавычки не имеют особого значения для hass-cli
, в противном случае замените одинарные кавычки экранированными двойными кавычками:
hass-cli service call notify.alec --arguments title=""$1"",message=""$2""
Итак, команда теперь становится:
hass-cli service call notify.alec --arguments title="My Title",message="My description."
Комментарии:
1. Когда вы говорите, что команда «расширяется» таким образом, не могли бы вы уточнить, какая система это делает? Потому что Zsh, конечно, не …
2. К сожалению, оба этих параметра дают мне
Error: Got unexpected extra arguments (My Title",message="My description.")
<- это из вашего второго примера.3. На самом деле, даже
hass-cli service call notify.alec --arguments title="My Title",message="My description."
сбой сError: Got unexpected extra arguments (Title,message=My description.)
. Возможно, проблема вhass-cli
том, как она настроена в моей системе. Кажется, отлично работает на другой машине.4. Нет такой же ошибки. Я запускаю эту команду в сеансе SSH. В сеансе, отличном от SSH, на моей основной машине он работает нормально.
5. как вы упомянули, возможно, что-то с
hass-cli
… разные настройки / конфигурации, разные версии? боюсь, у меня сейчас нет идей…