问题:
bash-5.0-6试图运行以下脚本会导致语法错误:
wget -nv -O index.html "https://de.wikibooks.org/w/index.php?title=Spezial%3APrefixindex&namespace=0&from=$buch"
产生的错误消息:
2020-08-24 20:38:51 URL:https://de.wikibooks.org/w/index.php?title=Spezial:Pr%C3%A4fixindex&namespace=0&from=Mathematik%3A_Lineare_Algebra [96400] -> "index.html" [1]
get_wikibooks.sh: 18: Syntax error: Unterminated quoted string
符号"-"导致了错误,如何才能编写一个可用的脚本?
post script,完整代码是:
set -x
#!/bin/bash
buch=$(zenity --entry --title "Download eines Wikibooks" --text "Bitte geben Sie den Buchtitel an:")
buch=$(echo $buch | sed "s/ /_/g")
mkdir -p ~/wikibooks/$buch
cd ~/wikibooks/$buch
wget -nv -O index.html 'https://de.wikibooks.org/w/index.php?title=Spezial%3APrefixindex&namespace=0&from=$buch'
if [ $? -ne 0 ] ; then
zenity --error --title "Download eines Wikibooks - Fehler"
--text "Ein Fehler ist aufgetreten! nÜberprüfen sie die Internet-Verbindung und den Buchtitel."
fi
wget -nv -c $(cat index.html | tr '"' 'n' | egrep "^/wiki$buch" | sort -u | sed "s#^#https://de.wikibooks.org#")
if [ $? -ne 0 ] ; then
zenity --error --title "Download eines Wikibooks - Fehler"
--text "Ein Fehler ist aufgetreten! nÜberprüfen sie die Internet-Verbindung und den Buchtitel."
fi
for i in $(ls); do sed "s#href="/wiki/$buch#href="./$buch#g" $i > $i.temp; mv $i.temp $i; done
zenity --info --title "Download eines Wikibooks" --text "Herunterladen des Buches erfolgreich!"
答案1:
代码有引号错误,考虑以下行:
wget -nv -c $(cat index.html | tr '"' 'n' | egrep "^/wiki$buch" | sort -u | sed "s#^#https://de.wikibooks.org#")
tr命令为tr'"''n'
,命令的最后一个引号是unicode (非ASCII )反引号。
用tr'"''n'
替换。
答案2:
wget -nv -O index.html 'https://de.wikibooks.org/w/index.php?title=Spezial%3APrefixindex&namespace=0&from=$buch'
注意'
单引号,除非$buch
是bash脚本中的变量。