Используйте * в скрипте bash

Есть несколько вопросов по этому поводу, но я не могу понять это правильно.

У меня есть скрипт, который назначает конкретный путь к переменной и добавляет имя файла с * в нем. Если в пути есть пробел, я не могу заставить скрипт выполнить правильную оценку.

Допустим, переменная установлена ​​на что-то вроде:

var="/path/with/a space/in/it/"*.jpg

если я попробую что-то вроде

for i in $var
do
  echo "$i"
done

скрипт вообще не найдет никаких файлов и просто выдаст значение var с * в нем, разделив его на два:

/path/with/a
space/in/it/"*.jpg

Так есть ли способ заставить его обрабатывать переменную как правильный путь?

Это была некоторая помощь, но она не совсем работает, как мне хотелось бы.

1 ответ

Так как это bash, вы можете сделать var массив (см. этот вопрос Unix.SE о расширении глобусов):

shopt -s nullglob

var=("/path/with/a space/in/it/"*.jpg)

for i in "${var[@]}"
do
  echo "$i"
done
Другие вопросы по тегам