[devel] build -m & spaces;

Ivan Zakharyaschev imz на altlinux.org
Пн Фев 10 12:12:49 MSK 2020


On Mon, 10 Feb 2020, Alexey V. Vissarionov wrote:

> On 2020-02-10 10:01:42 +0300, Ivan Zakharyaschev wrote:
> 
>  > Похожий эффект можно наблюдать при обычном использовании ssh:
>  > $ ssh 0 echo 'a           b                c'
>  > a b c
>  > Куда делись пробелы?..
>  > shell на той стороне разбил команду на слова по пробелам.
>  > Так что чтобы надёжно передать значение для build -m как один
>  > аргумент, лучше не использовать в нём пробелы.
>  > Уже обсуждалось в этом списке рассылки.
> 
> Вы таки сильно удивитесь, но:
> 
> % ssh ::1 echo "'a           b                c'"
> a           b                c
> Connection to ::1 closed.
> 
> Или я неправильно понял, в чем состоит задача?

Я пытался объяснить причину происходящего. Можно ещё сказать так: те 
одинарные кавычки, которые написаны в команде ssh 0 echo 'a  b     c'
обрабытвааются shell-ом на этой стороне, потом ssh склеивает все аргументы 
в одну строку и передаёт это как команду shell-у на той стороне.

Вот это я хотел продемонстрировать.

У shell-а на той стороне уже нет следов того, что вы пытались 
"сгруппировать" в один аргумент.

Умеет ли он обрабатывать кавычки, если они всё же до него добрались, 
отдельный вопрос. Зависит от shell-а на той стороне.

Но первой части (т.е. моего ответа) вроде уже достаточно, чтобы понять, 
что интерфейс, которым можно было бы пользоваться в точности так, как 
пытался автор вопроса, невозможно реализовать.

А с поправками, как у тебя в примере -- может быть. Тут я не удвивлюсь. 
Особенно не удвилюсь, если на той стороне POSIX shell или т.п.

-- 
Best regards,
Ivan


Подробная информация о списке рассылки Devel