Написание небольшого скрипта в bash (фактически MacOS), и я хочу использовать найти, с несколькими источниками. Обычно это не проблема, но список исходных каталогов для поиска сохраняется как строка в переменной. Опять же, обычно это не проблема, но некоторые из них содержат пробелы в их имени.Найти космический побег
Я могу построить полную командную строку и, если ее ввести непосредственно в командной строке (скопируйте и вставьте на самом деле), она работает по мере необходимости и ожидается. Но когда я пытаюсь запустить его внутри скрипта, он разбивается на пробелы в названии, и мне не удалось обойти это.
Я не могу процитировать всю исходную строку, так как это просто рассматривается как один элемент, который, конечно, не существует. Я избегаю каждого пространства с обратной косой чертой внутри строки, хранящейся в переменной, и просто теряется. Если я использую двойную обратную косую черту, они оба остаются на месте, и снова он терпит неудачу. Любой метод цитирования, который я пробовал, в основном игнорируется, кавычки рассматриваются как обычные символы, а разбиение выполняется в каждом пространстве.
Я до сих пор только мог использовать eval на всей командной строке, чтобы заставить его работать, но я чувствовал, что это должно быть лучшим решением, чем это.
По иронии судьбы, если я использую AppleScript Я могу создать подходящую командную строку и отлично ее запустить с помощью doShellScript (хорошо, это использование JXA, но это то же самое с фактическим AppleScript). Тем не менее, я до сих пор не смог найти правильный механизм эвакуации только в сценарии bash, не прибегая к eval.
Кто-нибудь предлагает решение?
Меньше слов и больше кода, чтобы показать, что проблемные части были бы лучше .... – jm666
Прошу прощения, если вам трудно читать слова. – UKenGB