LINUX.ORG.RU

Shell функция с неизвестным количеством аргументов


0

0

Для упрощения рутинной и частой операции по поиску в логах пытаюсь сделать функцию. В идеале вызов будет выглядеть примерно так:

logsearch logfile location string
для простого варианта
logsearch 2010807.log /log_folder1 error
всё понятно, но не совсем понимаю как сделать поддержку wildcards, которые шелл разворачивает. Т.е. вариант
logsearch 201080*.log /log_folder{1,2,{8..12}} error
уже не прокатит

Shell - zsh, но вариант для баша тоже пригодится

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

как говорит нам известный гайд

the shift command reassigns the positional parameters, in effect shifting them to the left one notch.

$1 <--- $2, $2 <--- $3, $3 <--- $4, etc

то есть без полного перебора параметров всё равно никак не обойтись? Как то это скучно...

zolden ★★★★★
() автор топика

Программа должна телепатически определять, что вот этот параметр - имя файла, а вот этот - директории?

Можно первым параметром передавать wildcard для имён файлов, вторым - wildcard для директорий, и внутри уже раскрывать

т.е. что-то типа

logsearch '201080*.log' '/path/to/directory{1,2,3,{500-10000}}' bla

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

Ну можешь разбирать их как массив — «$*». Посмотри ещё getopt(s).

GotF ★★★★★
()

>logsearch 201080*.log /log_folder{1,2,{8..12}} error

А зачем? logsearch string locations/wildcard решает почти все проблемы. Для остальных - find locations -name wildcard ... | xargs logsearch string

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