0
У меня есть команда, которая работает хорошо, как это:Как получить путь к файлу из поиска с переменным файлом
fname=$(find $dir -name '*001.txt')
То, что я хотел бы сделать, это заменить номер на переменный:
fname=$(find $dir -name '*$num.txt')
, но ничего не получите. Я попытался избежать одиночных кавычек: \'*$num.txt\'
, включая одиночные кавычки в двойных кавычках: "'"*$num.txt"'",
, но ничего не работает. Что мне нужно?
Shell не расширяются в одинарные кавычки. Глобы не расширяются ни в кавычки. Вам нужно дважды указать переменную, а не цитировать glob ('*'). –
Как Кир понял правильно, и я не думал о том, что глобус не хочет расширяться оболочкой, которую вы хотите «найти», чтобы увидеть ее нерасширенной, поэтому сохраните '*' в двойных кавычках, как указано. Имейте в виду, однако, что это не безопасный способ вернуть несколько файлов, если вы хотите их использовать один за другим. Для этого вам понадобится цикл while (см. Http://mywiki.wooledge.org/BashFAQ/001 для получения дополнительной информации). –