Расширяя переменную, содержащую знак равенства и фигурные скобки

Простой Ruby one liner для обслуживания каталога:

ruby -run -e httpd . -p 8080
1
04.07.2018, 17:23
2 ответа

Раскрытие скобок не происходит при цитировании. Вы также должны хранить аргументы в массиве, а не в переменной (, когда это возможно ).

Думаю, вам должно подойти следующее:

excludes=( $(--exclude={foo,bar,baz}) )
rsync "${excludes[@]}"
2
27.01.2020, 23:23

From the bash debugger,... any string containing =, {, or } will get wrapped in single quotes when expanded.

Если вы имеете в виду вывод xtrace(set -x), он действительно предпочитает отображать аргументы в одинарных кавычках, когда они содержат специальные символы. Выходные данные имеют формат, который можно использовать в качестве входных данных для оболочки.

Однако это не означает, что кавычки являются частью строки.

Сравните:

$ echo abc def\ ghi
+ echo abc 'def ghi'
abc def ghi

$ echo abc \'def\ ghi\'
+ echo abc ''\''def ghi'\'''
abc 'def ghi'

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

1
27.01.2020, 23:23

Теги

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