zmodyfikowałem skrypt do pobierania utworów z YouTube, ale otrzymuję następujący błąd podczas uruchamiania go tak:zbyt wiele argumentów błąd w skrypcie bash
sh youtube2mp3.sh https://www.youtube.com/watch?v=gpOJ6iu8fqQ
błędów:
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.
Numery linii odnoszą się do trzech linii if [ -f $video_title.$ext1 ]
... Myślałem, że mam argumenty w porządku, jak działało w poprzedniej wersji, ale utknąłem w tym momencie - czy ktoś mógłby wyjaśnić, co muszę zrobić, aby to poprawić ?
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
Spróbuj podwójne cytowanie nazwy zmiennych w komendzie testowej. na przykład 'if [-f" $ video_title. $ ext1 "]' etc – user000001
uruchamiasz go w 'sh' zamiast' bash'. spróbuj to zmienić i zgłoś to. również umieść "" "wokół adresu URL i zgłoś to. – mnagel
Jest to w zasadzie duplikat https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable – tripleee