У меня есть строка в bash-скрипте, которая ищет папку, используя find
, и сохраняет ее путь.
Строка выглядит следующим образом:
findfolder=$(eval echo $(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1" ))
и это работает практически в любом случае, но по какой-то причине, если я ищу папку, в которой есть два пробела, он вернет путь, где все двойные пробелы были заменены на единичные пробелы.
Итак, если я ищу папку с именем "Моя музыка" с двумя пробелами между "Моей" и "музыкой", она вернет "Моя музыка" с один пробел.
Если я запускаю точно такую же команду непосредственно в терминале, я получаю правильную папку.
Почему это происходит? (Дайте мне знать, если вам нужно больше кода. Не похоже, что уместно, так как я выполнил ту же самую команду из терминала, хотя. Не хотим стену текста без видимой причины, теперь мы).
редактирование:
Сейчас работает. Первый eval или echo (не уверен, но мои тесты показывают, что он был eval) вызывал свертывание вывода, удаляя «ненужный» интервал. Рабочий код:
findfolder="$(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1" )"