LINUX.ORG.RU

Экранирование символа звёздочка (*) в скриптах

 ,


0

2

Пытаюсь написать простой скрипт который выводит запрос из БД. Пример скрипта: ARG0=«select * from table»; echo $ARG0 При выводе данных вместо звёздочки(*) выводит все файлы из дериктории выполнения скрипта. Как экранировать (*), чтобы на выходе было «select * from table»?


В баше не силён, но обычно экранирование делается обратным слешем.

WereFox ★☆
()

Попробуй одинарные кавычки

ARG0='select * from table'

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

Тема закрыта. Просили не благодарить =)

hibiky
() автор топика

Лучше всего использовать кавычки:

ARG0="select * from table"
echo "$ARG0"

Логика такова, что переменные ($ARG0) раскрываеются перед вызовом команды и строчка заново интерпретируется. Т.е. в твоем случае строка после раскрытия переменной будет выглядеть:

echo select * from table
Что, в свою очередь, будет интерпретировано еще раз: звездочка (*) раскроется в список как glob-выражение.

Кстати, хак: попробуй запустить свой скрипт в директории где нет файлов (или все ".скрытые")

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от KennyMinigun

В них символ доллара надо экранировать перед буквами ;)

Ну речь-то про звездочку была.

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

Кстати, хак: попробуй запустить свой скрипт в директории где нет файлов (или все ".скрытые")

Тогда уж вообще подстановки можно отключить:

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