Я пишу сценарий, который применяет команду для загрузки файлов. То, как я это автоматизирую, сводится к
#!/bin bash
for in_file in ${PWD}/*/*/*.txt; do
out_file="${in_file//in/out}"
CM="/usr/local/bin/command -in \"${in_file}\" -out \"${out_file}\""
echo ${CM}
${CM}
done
Типичный вывод, который я получаю,
/usr/local/bin/command -in "/home/user/infile.txt" -out "/home/user/outfile.txt"
error:
/usr/local/bin/command: unable to find file "/home/user/infile.txt"
...
Но затем я вырезал и вставил в командную строку ту же команду, дословно, включая все кавычки и т.д., И она запускается без проблем!
Потому что много имен файлов (что я не сделал!) есть пробелы, мне нужны цитаты в сценарии. Но может кто-нибудь сказать мне, почему они не работают в сценарии и работают в командной строке? И есть ли способ сделать это правильно?