Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Передать переменную из AGI скрипта BASH

0

Эта музыка будет вечной)

Есть небольшой скрипт на bash, с помощью sed парсим текст, получаем url и небольшое словосочетание.

Эти две переменные нужно передать обратно в Астер.

Передаю так: echo "SET VARIABLE text1 ${res1}" echo "SET VARIABLE text1 ${res2}"

Так вот, если ${res1} - просто слово, или число все ок. А если это, как в нашем случае словосочетание, с пробелами, или url то Астер возвращает

SET VARIABLE url1 petya and vasya 520-Invalid command syntax. Proper usage follows:

AGI Tx >> Sets a variable to the current channel.

Вопрос, как передать "длинную" переменную через bash-скрипт обратно в Астер. Экспериментировал с кавычками, скобками и т.д. БЕсполезно.

При этом естественно, если просто в диалплане указать, что Set(res1=апвп и пвп ипвп ии) то переменная без проблем устанавливается.

удалить закрыть спам изменить тег редактировать

спросил 2018-01-15 05:05:46 +0400

Rockast Gravatar Rockast
57 5 5

Comments

да, давайте делать все через жопу. Мы ж ни одной книжки по unix не прочитали и про экранирование - не знаем.

meral ( 2018-01-15 12:58:26 +0400 )редактировать

http://qaru.site/questions/34521/which-characters-need-to-be-escaped-in-bash-how-do-we-know-it для астериска работают те же общие unix/linux правила

meral ( 2018-01-15 13:15:22 +0400 )редактировать

1 Ответ

1

вам надо заэкранировать символы в соответсвии с общими правилами.

тоесть както вот так

echo "SET VARIABLE test \"${res}\""

и в самой переменной res - тоже, с помощью sed

Если вы уверены, что там только буквы и пробелы - достатоточно просто кавычек как выше нарисовано.

ссылка удалить спам редактировать

ответил 2018-01-15 12:57:18 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2018-01-15 13:32:44 +0400

Comments

Спасибо за наводку, добрый человек) Если указать так - echo "SET VARIABLE test \"${res}\"" То Астериск отдает SET VARIABLE text1 "" AGI Tx >> 200 result=1

То есть видит только кавычки.

Если указать перед этим в скрипте:

res1="тестовый текст" И отправить echo "SET VARIABLE text1 \"${res1}\"" то все отлично, Астер все понимает и т.д.

Но у меня переменная res1 - это элемент массива ${array[0]}. И если указываем res1="${array[0]}" то опять видит только кавычки

SET VARIABLE text1 "" AGI Tx >> 200 result=1

Может быть подскажете, как тут правильно указать res1="${array[0]}". При этом ${array[0]} содержит такой же тестовый текст, который если присвоить вручную к переменной res1, то все отлично видится.

P.S.Сейчас это все делаю уже без sed, просто присваиваю значения переменным.

Rockast ( 2018-01-15 15:45:14 +0400 )редактировать
1

это у вас чтото в скрипте. астериску реально пофиг и вот так как написано ТОЧНО работает. сначала просто поиграйтеся echo без астериска, в командной строке, пока не получите нужный результат. никогда не пользовалься масивами в баше. он для этого не предназначен.

meral ( 2018-01-16 19:23:33 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2018-01-15 05:05:46 +0400

Просмотрен: 1,004 раз

Обновлен: Jan 15 '18

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.