调用带有与号的参数的 Bash 函数

luk*_*cke 1 bash aria2

我想要一个 bash 函数来改变这个……

download HELLO&P=1&Q=2
Run Code Online (Sandbox Code Playgroud)

进入这个……

aria2c -d ~/Downloads "HELLO&P=1&Q=2"
Run Code Online (Sandbox Code Playgroud)

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

这是我的.bash_profile功能。

download() {
  aria2c -d ~/Downloads "$1"
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例输出。

~ $ download HELLO&P=1&Q=2
[1] 7389
[2] 7390
aria2c -d /Users/lukejanicke/Downloads HELLO
[1]-  Done                    download HELLO
[2]+  Done                    P=1
~ $ 
Run Code Online (Sandbox Code Playgroud)

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

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

小智 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
Run Code Online (Sandbox Code Playgroud)