Вывод останавливается из-за и (амперсанд). Я должен включить каждую строку вывода в кавычках? Я думаю?

Я использую pushbullet для отправки списка недавно измененных файлов к моему телефону каждое утро. Я использую, Находят и printf, чтобы убрать список и продвинуть его к pushbulet сценарию.

/home/user/scripts/pushbullet/pushbullet.sh "Synced: `find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 | wc -l`" "`find /mnt/1tb/tv/ /mnt/1tb/movies/ -type f -ctime -1 -printf "%f\n"`"

Сначала это получает количество измененных файлов и затем список измененных файлов без каталога.

Проблема состоит в том, если имя файла File&Cheese.mkv сообщение отправило мне остановки в 'Файле' и ничем после того, как амперсанд отправляется. Это - проблема с pushbullet сценарием.

Я думаю, что было бы самым легким только удостовериться, что каждая строка списка, который производится, входит в кавычки, но я не могу разработать, как сделать это.

Какие-либо идеи?

2
задан 18 November 2016 в 10:01

1 ответ

Можно получить каждое имя файла в кавычках путем передачи по каналу Вашего find вывод к while и использования echo

find ... |  while read line ; do echo \""$line"\" ; done

замена find ... с целым find команда.

завершенные кавычки \" распечатают литерал " вокруг каждой строки, но также и заключат переменную в кавычки для предотвращения расширений.

Вывод будет похож

"my file"
"another file"
"File&Cheese.mkv"
1
ответ дан 2 December 2019 в 04:52

Другие вопросы по тегам:

Похожие вопросы: