Неверно завернутый в линию

В решении вопроса Дэвид Фостер упоминает, что следующая команда неверно связана с линией, которая вводит разрывы строк и обратные символы, где их не должно быть:

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

Возможно ли показать что именно он имеет в команде?

0
задан 16 January 2018 в 01:15

2 ответа

Мы можем использовать printf, чтобы выделить отдельные аргументы и проверить, как оболочка их токенизирует. Для рассматриваемой команды по сравнению с исправленным вариантом в моем ответе на связанный вопрос (проверенный в Bash and 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

Я не знаю, как это произошло, но оно конечно выглядит как проблема с обратными косыми чертами на линии. Откуда они пришли? Возможно, автор действительно ввел другую команду или использовал другой интерпретатор интерпретатора.

1
ответ дан 17 July 2018 в 22:57

Мы можем использовать printf, чтобы выделить отдельные аргументы и проверить, как оболочка их токенизирует. Для рассматриваемой команды по сравнению с исправленным вариантом в моем ответе на связанный вопрос (проверенный в Bash and 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

Я не знаю, как это произошло, но оно конечно выглядит как проблема с обратными косыми чертами на линии. Откуда они пришли? Возможно, автор действительно ввел другую команду или использовал другой интерпретатор интерпретатора.

1
ответ дан 24 July 2018 в 13:32

Другие вопросы по тегам:

Похожие вопросы: