1

我想要一个 bash 函数来改变它……</p>

download HELLO&P=1&Q=2

进入这个……</p>

aria2c -d ~/Downloads "HELLO&P=1&Q=2"

HELLO&P=1&Q=2是一个 MAGNET 链接。如果它周围没有双引号,则 aria2c 不起作用。但我似乎无法将这一切保持在一起。问题似乎是 MAGNET 链接&key=value末尾有一系列对(在我的示例中&P=1&Q=2),这些似乎被剥离并与链接的其余部分(即HELLO)分开。

这是我的.bash_profile功能。

download() {
  aria2c -d ~/Downloads "$1"
}

这是一个示例输出。

~ $ download HELLO&P=1&Q=2
[1] 7389
[2] 7390
aria2c -d /Users/lukejanicke/Downloads HELLO
[1]-  Done                    download HELLO
[2]+  Done                    P=1
~ $ 

甚至不知道去了哪里Q=2。使用真正的 MAGNET 链接,所有部件都以这种枚举方式显示。

我需要某种方式将整个 MAGNET 链接捕获为单个参数,然后aria2c在链接周围使用引号执行命令。

4

2 回答 2

5

双引号使 bash 解释内部字符串。

我已经通过以下方式对其进行了测试:

$ download() {   aria2c -d ~/Downloads "$1"; }
victor 0 12:48 /Users/victor/tmp

$ download "http://localhost:8080/HELLO&P=1&Q=2"

10/07 12:48:56 [NOTICE] Downloading 1 item(s)

10/07 12:48:56 [ERROR] CUID#7 - Download aborted. 
URI=http://localhost:8080/HELLO&P=1&Q=2E
于 2017-10-07T17:46:44.047 回答
3

&是 shell 中的一个特殊字符。您需要引用包含它的字符串:

download 'HELLO&P=1&Q=2'

否则,它被理解为在后台运行左侧的命令分隔符。

于 2017-10-07T17:45:52.227 回答