Обработайте имя файла с пробелами в сценарии Bash

В моем сценарии Bash я должен обработать имена файлов с пробелами. Это важные строки в моем сценарии:

mp3file="/media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\ Vol.5\ \[MP3PRO\]/01\ -\ Nofx\ -\ Pump\ up\ the\ Valium.mp3"
echo "Command: mp3info -x `echo $mp3file`"
mp3info -x `echo $mp3file`

К сожалению, команда не работает, потому что имя файла является splitted:

mp3info: invalid option -- '\'
mp3info: invalid option -- '\'
Error opening MP3: /media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\: No such file or directory
Error opening MP3: Vol.5\: No such file or directory
Error opening MP3: \[MP3PRO\]/01\: No such file or directory
Error opening MP3: Nofx\: No such file or directory
Error opening MP3: Pump\: No such file or directory
Error opening MP3: up\: No such file or directory
Error opening MP3: the\: No such file or directory
Error opening MP3: Valium.mp3: No such file or directory

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

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
# Script like above
IFS=$SAVEIFS

Но этот путь, я получаю ошибку

Error opening MP3: /media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\ Vol.5\ \[MP3PRO\]/01\ -\ Nofx\ -\ Pump\ up\ the\ Valium.mp3: No such file or directory

Я попробовал долгое время теперь, но я не могу заставить свой сценарий работать. То, что является странным, - то, что, если я выполняю ту же команду, которую мой сценарий должен создать вручную (повторяющий его в моем сценарии) на Shell, он на самом деле работает. Но не в моем сценарии. Какие-либо подсказки?

4
задан 11.12.2015, 09:35

1 ответ

Перенесите имена переменной в кавычки:

mp3file="/media/music/Punk-O-Rama Vol.5 \[MP3PRO\]/01 - Nofx - Pump up the Valium.mp3"
echo "Command: mp3info -x \"$mp3file\""
mp3info -x "$mp3file"

Я также удалил лишнее echo команды и выход, который не необходим.

9
ответ дан 07.12.2019, 19:30

Теги

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