Нужно ли удвоить замену процесса?

Похоже, вам нужна опция -N для ssh.

 -N      Do not execute a remote command.  This is useful for just forwarding ports
         (protocol version 2 only).
-4
05.12.2018, 01:17
2 ответа

Подстановка процесса цитирования будет препятствовать этому, как это тривиально проверено:

$ echo <(echo 123)
/dev/fd/63
$ cat <(echo 123)
123
$ echo "<(echo 123)"
<(echo 123)
$ cat "<(echo 123)"
cat: '<(echo 123)': No such file or directory

Мне странно, что вы не попытались сделать это до того, как задать вопрос, но теперь, по крайней мере, легко проверить, что это не сработает.

Это ничем не отличается от того, что происходит при цитировании других операторов оболочки; echo "("не является синтаксической ошибкой по той же причине, и echo "> /dev/sda"не вызывает у вас никаких проблем.

Задокументированное поведение состоит в том, что:

This filename is passed as an argument to the current command as the result of the expansion

В качестве единственного аргумента наличие или отсутствие пробела не имеет значения, а разбиение слов -не имеет значения и не выполняется. Вполне вероятно, что на какой-то платформе в сгенерированном пути появились пробелы, но это не повлияет.

6
28.01.2020, 05:19

В bash, когда строка заключена в двойные кавычки , она интерпретируется как литерал, ЗА ИСКЛЮЧЕНИЕМ случаев, когда задействован хотя бы один из следующих специальных символов:

$ ` \ ! * @

Синтаксис подстановки процесса <(command_list)нельзя интерпретировать внутри двойных кавычек. В нем нет задействованного символа, который будет интерпретироваться как что-либо иное, кроме буквального. Двойные кавычки ДОЛЖНЫ предотвращать замену процесса, потому что это не позволяет интерпретировать его синтаксис.

Синтаксис подстановки команд::

$(command)
# or
`command`

Оба они начинаются со специальных символов в двойных кавычках($или обратных -тиков ), и, как вы знаете, двойные кавычки не запрещают подстановку команд.

Как правило, это хорошее первое правило, которое следует учитывать, когда вы хотите предсказать, будет ли двойное цитирование подавлять какое-либо поведение. Если синтаксис не включает один из этих 6 символов, двойные кавычки должны его подавить (раскрытие фигурных скобок, расширение тильды, подстановка процесса, разбиение слов, ничего из этого не может произойти внутри двойных кавычек ). Конечно, не все с синтаксисом, включающим один из этих шести символов, заключаются в двойные кавычки, но это хорошее первое правило, которое следует учитывать. Этот ответ и правило предназначены для того, чтобы помочь вам делать прогнозы до того, как вы столкнетесь со всеми случаями и запомните их. Если синтаксис не может быть интерпретирован внутри двойных кавычек, поведение не может произойти.

1
28.01.2020, 05:19

Теги

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