LINUX.ORG.RU
ФорумAdmin

echo in sh


0

0

Ребята, а какой командой в sh можно экранировать полученные силволы из аргумента $@, что бы нельзя было запустить сторонии процесс или команду. Просто иногда попадаются символы (') или вот в аргументе (|*|) почему-то взял и файлы в папке показал.

anonymous

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

Точней так: CMD=`echo "$*"` echo `nice "seeip" "/tmp" "$CMD"` $@ - скорее режит, до первого непонятного символа.

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

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

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

Хотя, возможно, я тебя не так понял и тебе просто надо брать параметры в одинарные ковычки (апостроф - ' )

sdio ★★★★★
()

понимаешь, аргументы искажается еще до поступления в $@

нужно экранировать сам вызов

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

Т.е. нужно сделать так. Послать команду типа: test.sh '(|*|)'

А в скрипте переделать на:

echo `nice "'seeip'" "'/tmp'" "'$CMD'"`

Но так у меня выбрасывает: папка '/tmp' не найденна

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

Посылаю команду: test.sh '(F, |*|)'

В скрипте указал:

WBIN="seeip"

out="nice "WBIN" /tmp '"$@"'" echo "$out" echo `$out`

Вывод скрипта:

nice seeip /tmp '(F, |*|)' - т.е. аргументы он получил в $@ нормальные и в ковычки вроде засунул правильно.

Вывод програмы seeip: dir:/tmp arg:(F,

Кудато потерялся кусок аргумента " |*|)"

посылаю на прямую команду: nice seeip /tmp '(F, |*|)'

Вывод програмы seeip: dir:/tmp arg:(F, |*|)

Убираю, пробел и опять посылаю test.sh '(F,|*|)' - и опять он выводит в значении |*| всех файлов в директории, т.е. аргумент клацает в команду, я правда ещё видел ошибку выкидывало когда в аргументе есть куча апостроф.

Что ещё надо добавить в "nice "WBIN" /tmp '"$@"'", вроде как вы и порекомендовали вставил апостроф?

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

Так заработало, но ...

Что бы $out можно было потом обработать к примеру: echo -n `$out`

Вот ещё проблема, когда в аргументе есть кавычки к примеру: x' s''

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

С двойными фигурными ковычками тоже облом: {m}{n}

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