В моем сценарии 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, он на самом деле работает. Но не в моем сценарии. Какие-либо подсказки?
Перенесите имена переменной в кавычки:
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
команды и выход, который не необходим.