错误换行

错误换行

为了解决问题,David Foerster 提到以下命令错误地换行,从而引入了换行符和退格符,而这些换行符和退格符不应该存在:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

是否可以显示他在命令中到底指的是什么?

答案1

我们可以使用printf来突出显示各个参数并检查 shell 如何对它们进行标记。对于有问题的命令与我在链接问题的答案中的更正变体(在 Bash 和 Dash 中测试):

$ printf '"%s"\n' sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
"sudo"
"add-apt-repository"
"deb [arch=amd64] https://download.docker.com/linux/ubuntu        trusty        stable"

$ printf '"%s"\n' sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
"sudo"
"add-apt-repository"
"deb [arch=amd64] https://download.docker.com/linux/ubuntu trusty stable"

哦,那没什么不同。但是,对于链接问题的作者来说,存储库源文件中的内容并非如此:

Error: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu \ xenial \ stable' invalid

我不知道这是怎么发生的,但看起来确实是行尾反斜杠的问题。它们还能从哪里来?也许作者实际上输入了不同的命令,或者他们使用了不同的 shell 解释器。

相关内容