Назад | Перейти на главную страницу

как обернуть строки возврата command1 одинарными / двойными кавычками (\ 'или \ ") для передачи следующей команде2?

Например, я хочу использовать mplayer для воспроизведения музыки нескольких каталогов, введите в bash вот так:

$ find './l_music/La Scala Concert 03 03 03' './l_music/Echoes The Einaudi Collection' './l_music/Лудовико Эйнауди - концерт в Королевском Альберт-Холле [2 CD] (2010)' -name '*. mp3 '| xargs mplayer

Ну, вы знаете, путь возврата команды find, в каком каталоге и файле всегда есть пространство, команда mplayer справа по каналу не принимает эти пути mp3.

Я думаю, что если заключить строки возврата find в одинарные / двойные кавычки (\ 'или \ ") для передачи в mplayer, проблема будет решена.

Но как я могу решить эту проблему, просто используйте команду bash, не используйте сценарии bash или perl, а можете дать мне одну команду строки perl с использованием параметров командной строки Perl.

Использовать -print0 вариант в найти который разделит имена файлов с помощью нулевого символа вместо пробела.

В xargs использовать -0 который сообщает ему, что имена файлов, которые он получит в качестве входных данных, разделены нулями.

Тогда ваша примерная команда станет:

find './l_music/La Scala Concert 03 03 03' './l_music/Echoes The Einaudi Collection' './l_music/Ludovico Einaudi - The Royal Albert Hall Concert [2 CD] (2010)' -name '*.mp3' -print0 | xargs -0 mplayer

Смотрите также: Как я могу обрабатывать пробелы в именах файлов при использовании xargs для результатов поиска?