为什么即使用双引号将 URL 括起来,wget 仍然失败?

为什么即使用双引号将 URL 括起来,wget 仍然失败?

我将我想要的 URL 括起来wget""因为它们大多数都有空格、大括号等。它通常工作正常,但我无法让此 URL 工作:

wget "http://xxxx/Sankarea - 6 - It`s Because I... Ran Into You (720p-100MB)[Commie][Daylighter].mkv"

它输出

-bash: command substitution: line 1: syntax error near unexpected token `('
-bash: command substitution: line 1: `s Because I... Ran Into You (720p-100MB)[Commie][Daylighter].mkv" 

这是什么意思?有什么技巧可以解决这个问题吗?

答案1

尝试单引号:

wget 'http://xxxx/Sankarea - 6 - It`s Because I... Ran Into You (720p-100MB)[Commie][Daylighter].mkv'

如果 URL 本身有单引号,则将 URL 拆分为两个字符串,并使用反斜杠插入单引号:'...'\''....'或使用双引号:'...'"'"'....'。这些字符串之间不留空格。

$ echo 'Haru'\''s Death'
Haru's Death
$ echo 'Haru'"'"'s Death'
Haru's Death

字符在单引号之间进行解释,甚至不是反斜杠(所以你不能这样做echo 'Haru\'s Death',这会给你PS2提示(通常是>

答案2

为了完整起见,在“...”中,您可以使用反斜杠禁用字符 shell 仍然遵循的命令;它们是反斜杠本身、\双引号"美元$反引号 ` 和(如果 shell 支持历史扩展并且未禁用) bang !。但是(我同意)单引号方法在这里可能更好。

相关内容