Комманда
find ~/work/ \( -name '[a-zA-Z]*' -or -name '*h' \) -print
ищет файлы, начинающиеся с прописных и строчных букв и файлы, оканчивающиеся на h)
Перношу всю эту байду в скрипт для sh:
#!/bin/sh
find ~/work/ \( -name '[a-zA-Z]*' -or -name '*.h' \) -print
все работает.
Теперь хочу чтобы шаблон поиска лежал в переменной. Казалось бы чего проще:
#!/bin/sh
files_pattern="-name '[a-zA-Z]*' -or -name '*h'"
find ~/work/ \( $files_pattern \) -print
Не находится ничего. Используя set +x для отладки понимаю, что в find sh передает '[a-zA-Z]*', но не [a-zA-Z]*, что и приводит к ненахождению.
Убираю одинарные кавычки:
#!/bin/sh
files_pattern="-name [a-zA-Z]* -or -name *.h"
find ~/work/ \( $files_pattern \) -print
Выдается ошибка, так как shell за место * подставляет все херню. Получается, что не получается и не на елку влезть и рубку не съесть.
Объясните как шелл работает с гребанными кавычками и как разрулить мой пример в sh сценариию.
С юлагодарностью, Начинающий
files_pattern="-name '[a-zA-Z]*' -or -name '*.h'"
find ~/work/findstr/ \( $files_pattern \) -print
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум сценарий (2005)
- Форум .sh (2006)
- Форум sh (2007)
- Форум Screenshot - сценарий (2019)
- Форум Сценарий bash (2022)
- Форум telnet-сценарии (2008)
- Форум сценарии загрузки (2002)
- Форум Язык сценариев (2005)
- Форум bash-сценарий (2005)
- Форум sh sh-у рознь (2007)