我在这里阅读了一个教程,我可以使用
while read line
do
wget -x "http://someurl.com/${line}.pdf" -o ${line}.pdf
done < inputfile
Run Code Online (Sandbox Code Playgroud)
但是,此脚本继续以不包含任何值的 $line 运行。如果下一行为空或出现某些“信号”字,我该如何更改脚本停止的代码。
感谢您的帮助
以下是在零长度值上停止 while 循环的方法line
:
#!/usr/bin/bash
while read line
do
if [[ -z $line ]]
then
exit
fi
wget -x "http://someurl.com/${line}.pdf"
done < inputfile
Run Code Online (Sandbox Code Playgroud)
我认为您真正的问题可能在于“http”之前不匹配的双引号字符,或者“inputfile”末尾不匹配的反引号字符。在尝试我的代码示例之前,您应该清理引用。
while read line && [ "$line" != "quit" ]; do # ...
Run Code Online (Sandbox Code Playgroud)
或者停在空行处:
while read line && [ "$line" != "" ]; do # ...
Run Code Online (Sandbox Code Playgroud)
或者
while read line && [ -n "$line" ]; do # ...
Run Code Online (Sandbox Code Playgroud)
关于不同的主题:
"http://someurl.com/$line.pdf" -o "$line.pdf"
Run Code Online (Sandbox Code Playgroud)
您不需要花括号,但您应该在最后一个变量扩展周围使用双引号。