У меня есть некоторый код, как следующий внутри Bash сценария:Баш переменная расширения и процитировать для части команды находят
FileNames=""
while read -r FileName; do
...
FileNames+=" -o -iname \"$FileName\""
...
done <"$ListOfFileNames"
FileNames="${FileNames# -o }"
find foo -type f \($FileNames \)
Это правило работает для меня, пока я не обнаружил, что некоторые имена файлов содержат пробелы (и, возможно, другие специальные символы). Когда я добавил дополнительный котировки вокруг использования $FileName
для покрытия этих случаев, расширение $FileNames
в команде find
начинает плохо себя вести. Я пробовал использовать другие способы цитирования и ускользания. Я успешно использовал переменные многими другими способами во многих других сценариях, которые я написал, но это меня озадачило. Я запускаю скрипт под Cygwin. Есть ли хороший способ справиться с этим?
Я просто искал ответ на это сам. [Здесь ya go.] (Http://stackoverflow.com/a/143172/6142694) –
Barmar, ссылка, которую вы предоставляете, не отображалась так, как я искал, но я вижу, что это в основном та же проблема. Тем не менее, я бы сказал, что это не «точный дубликат», поскольку ему не приходилось иметь дело с цитированием вложенного расширения, а затем с удалением части переменной (с которой я ошибся в первый раз, когда я попробовал метод массива). – knokej
Даниэль, я на самом деле не видел, что место, куда ваша ссылка отправила меня, объясняла мою проблему с переменным расширением внутри команды, но теперь это вода под мостом. – knokej