Я модифицировал этот сценарий, чтобы скачать песни с YouTube, но я получаю следующее сообщение об ошибке, когда я запускаю его, как это:Слишком много аргументов ошибки в Баш скрипт
sh youtube2mp3.sh https://www.youtube.com/watch?v=gpOJ6iu8fqQ
Ошибки:
youtube2mp3.sh: line 31: [: too many arguments
youtube2mp3.sh: line 39: [: too many arguments
youtube2mp3.sh: line 49: [: too many arguments
Sorry but the system encountered a problem.
Номера строк относятся к трем линиям if [ -f $video_title.$ext1 ]
... Я думал, что у меня есть аргументы в порядке, поскольку это сработало в предыдущей версии, но я застрял на этом этапе - может кто-нибудь объяснить, что мне нужно сделать, чтобы исправить это ?
address=$1
video_title="$(python youtube-dl $address)"
ext1="flv"
ext2="mp4"
ext3="webm"
if [ -f $video_title.$ext1 ]
then
ffmpeg -i $video_title.$ext1 "$video_title".wav
lame "$video_title".wav "$video_title".mp3
rm $video_title.$ext1 "$video_title".wav
else
if [ -f $video_title.$ext2 ]
then
ffmpeg -i $video_title.$ext2 "$video_title".wav
lame "$video_title".wav "$video_title".mp3
rm $video_title.$ext2 "$video_title".wav
else
if [ -f $video_title.$ext3 ]
then
ffmpeg -i $video_title.$ext3 -acodec libmp3lame -aq 4 "$video_title".mp3
rm $video_title.$ext3
else
echo "Sorry but the system encountered a problem."
fi
fi
fi
Попробуйте дважды процитировать имена переменных в тестовой команде. например 'if [-f" $ video_title. $ ext1 "]' и т. д. – user000001
вы запускаете его в 'sh' вместо' bash'. попытайтесь изменить это и отчитаться. также помещайте '' '' вокруг своего URL-адреса и сообщайте об этом. – mnagel
Это в основном дубликат https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable – tripleee