Заставить bash развернуть подстановочный знак в команде скрипта?

#linux #bash

#linux #bash

Вопрос:

Мой скрипт получает подстановочный знак в качестве параметра, и мне нужно применить к find нему команду. Проблема в том, что если я не заключаю параметр в кавычки, оболочка расширяет его относительно текущего каталога, но если я это сделаю, find команда вообще не расширяет его.

Мой код в настоящее время выглядит так :

 find /bin/"$1"
 

и $1 это *sh*
Если я запускаю его как /bin/*sh* в терминале, он работает так, как задумано.

Ответ №1:

-name Тест — это то, что расширяет подстановочные знаки при использовании find . Попробуйте это:

 find /bin/ -name "$1"
 

Комментарии:

1. Спасибо! Какая-либо конкретная причина, по которой это дает результаты в другом порядке?

2. Оболочка сортирует глобальные результаты, но find не выполняет никакой сортировки. Это позволяет ему печатать результаты, как только он находит каждый файл, а не ждать до конца. Вам понадобится руководство | sort или тому подобное, если вы хотите, чтобы имена файлов располагались в определенном порядке.