我正在尝试在脚本中执行此命令:
axel "$1"
其中“$ 1”是firefox插件FlashGot在脚本中发送给此命令的URL。但是,URL很长,并且不断缩短。解决这个问题的唯一方法是将URL括在单引号或双引号中......例如。的 “http:// ...”
提前谢谢。
嗯,它一直在
切断它http://audio-sjl-t1-2.pandora.com/access/Letting%20Go%20-%20Isaac%20Shepard%2Emp4a?version=4
就是这一切都被送到了axel。
我在脚本中添加了一个echo命令:
#!/bin/bash
cd /home/caleb/Desktop
echo "$1"
axel "$1"
我可以通过终端发送一个URL来查看脚本的调试:
./axel.sh <URL>
我看到的唯一错误消息是因为缩短了网址。
以下是上述脚本的输出:
http://audio-sjl-t1-2.pandora.com/access/Letting%20Go%20-%20Isaac%20Shepard%2Emp4a?version=4
Initializing download: http://audio-sjl-t1-2.pandora.com/access/Letting%20Go%20-%20Isaac%20Shepard%2Emp4a?version=4
HTTP/1.1 400 Bad Request
答案 0 :(得分:1)
axel "$1"
应该有用,我并不感到惊讶axel ""$1""
不起作用,因为这相当于axel $1
。
要调试这个,我们需要一条错误消息或其他东西,因为说“它不起作用”根本没有帮助。
你说这个脚本是从Firefox调用的。我不确定你是否可以轻松看到错误信息,也许你不能。我有一个想法。我们来调用你的脚本script.sh
。像这样创建一个包装脚本script-wrapper.sh
:
#!/bin/bash
log=/tmp/script.log
for arg; do
echo arg="'$arg'" | tee $log
done
/path/to/script.sh >>$log 2>&1
使此脚本可执行,从Firefox触发,然后查看日志,其中包括原始脚本的输出和错误输出。如果您仍然无法弄清楚出了什么问题,请编辑您的问题,然后粘贴/tmp/script.log
的内容,以便我们进行调试。
<强>更新强>
根据您的更新,看起来脚本无法正确接收URL。特别是,当您将URL传递给脚本时,看起来没有正确引用URL。截止发生在&
字符前面并不奇怪,因为这对shell来说意味着什么。您应该像这样调用您的脚本:
./axel.sh "http://....?version=4&lid=..."
但是这种情况并没有发生,它看起来没有双引号就被调用,这将导致你正在观察的行为。
答案 1 :(得分:0)
只需使用
#!/bin/sh
axel "$1"
将工作。如果不是,您将需要提供更多信息......