2015-04-03 3 views
0

У меня есть команда, которая работает хорошо, как это:Как получить путь к файлу из поиска с переменным файлом

fname=$(find $dir -name '*001.txt') 

То, что я хотел бы сделать, это заменить номер на переменный:

fname=$(find $dir -name '*$num.txt') 

, но ничего не получите. Я попытался избежать одиночных кавычек: \'*$num.txt\', включая одиночные кавычки в двойных кавычках: "'"*$num.txt"'",, но ничего не работает. Что мне нужно?

+0

Shell не расширяются в одинарные кавычки. Глобы не расширяются ни в кавычки. Вам нужно дважды указать переменную, а не цитировать glob ('*'). –

+0

Как Кир понял правильно, и я не думал о том, что глобус не хочет расширяться оболочкой, которую вы хотите «найти», чтобы увидеть ее нерасширенной, поэтому сохраните '*' в двойных кавычках, как указано. Имейте в виду, однако, что это не безопасный способ вернуть несколько файлов, если вы хотите их использовать один за другим. Для этого вам понадобится цикл while (см. Http://mywiki.wooledge.org/BashFAQ/001 для получения дополнительной информации). –

ответ

0

Попробуйте это: переменные

fname=$(find $dir -name "*${num}.txt") 
Смежные вопросы