LINUX.ORG.RU

bash: интерпретация строки


0

0

Считываю команду из конфига
Команда может содежрать конвейеры, к примеру
cmd=dmesg|grep xxx
Если я в баше непостедственно исполняю команду
TEST=`dmesg|grep xxx`
Всё зашибись
Если пытаюсь интерпретировать строку cmd через `$cmd` или $($cmd) - получаю ошибку, например
Использование: dmesg [-c] [-n уровень] [-s разм_буфера]
Складывается впечатление, что строка проэкранирована, т.е. экаивалентно исполнению
TEST=`dmesg\|grep xxx`
Так вот вопрос - как это экранирование обойти? В принципе могу править команду в конфиге, но не желательно

anonymous

Ответ на: комментарий от Davidov

Ыыыы мегаизврат, но работает, благодарствую

anonymous
()

А зачем загонять кучу команд в переменную?
Загони их в alias или функцию и все проблемы исчезнут, а код останется почти таким же.

sdio ★★★★★
()
Ответ на: комментарий от sdio

ну например в стандартном шелле (в отличие от баша) нельзя экспортировать функции -- только переменные. Поэтому если нужно экспортировать функцию, то загнать ее в переменную -- это решение.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.