Как правильно вложить обратные галочки Bash

Или я отсутствовал, некоторая обратная реакция или вызывание отрицательной реакции, кажется, не работают со слишком большим цикличным выполнением кавычки программиста.

$ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\``"

hello1-hello2-hello3-echo hello4

Требуемый

hello1-hello2-hello3-hello4-hello5-hello6-...
82
задан Rahil Wazir 18 December 2014 в 10:32
поделиться

3 ответа

Вместо этого используйте $ (команды) :

$ echo "hello1-$(echo hello2-$(echo hello3-$(echo hello4)))"
hello1-hello2-hello3-hello4

$ (команды) делают то же самое, что и обратные кавычки, но их можно вкладывать.

Вас также могут заинтересовать расширения диапазона Bash:

echo hello{1..10}
hello1 hello2 hello3 hello4 hello5 hello6 hello7 hello8 hello9 hello10
134
ответ дан 24 November 2019 в 09:10
поделиться

если вы настаиваете на использовании обратных кавычек, можно сделать следующее

$ echo "hello1-`echo hello2-\`echo hello3-\\\`echo hello4\\\`\``"

вам нужно поставить обратную косую черту , \\ \\\\ \\\\\\\\ на 2x и так далее, это просто очень некрасиво, используйте $ (commands) как другие предложенные.

33
ответ дан 24 November 2019 в 09:10
поделиться

Намного проще использовать синтаксис подстановки команд $ (cmd) в bash, который гораздо удобнее вложенные:

$ echo "hello1-$(echo hello2-$(echo hello3-$(echo hello4)))"
hello1-hello2-hello3-hello4
9
ответ дан 24 November 2019 в 09:10
поделиться