У меня возникли трудности с попыткой передать параметр bash в find
в качестве аргументов.Расширение параметра bash в качестве аргументов команды
Лучший объяснил с помощью кода:
$ echo $BASH_VERSION
4.1.2(1)-release
$ find /etc -path '*/init.d' 2>/dev/null | wc -l
2
$ args="-path '*/init.d'"
$ echo $args
-path '*/init.d'
$ find /etc $args 2>/dev/null | wc -l
0
$ set -x; !!
set -x; find /etc $args 2>/dev/null | wc -l
+ wc -l
+ find /etc -path ''\''*/init.d'\'''
0
Где дополнительные ''
котировки, поступающие из в set -x
выходе?
Я пробовал несколько различных способов заставить это работать, но пока не добился успеха. Это руководство, кажется, указывает, что это должно быть возможным, так как расширение параметра происходит перед выполнением команды: http://stuff.lhunath.com/parser.png
Диаграмма, на которую вы ссылаетесь, хороша, inasfar, поскольку она идет, но даже ее автор описывает это как объяснение _simplified_. См. Http://mywiki.wooledge.org/BashParser для чего-то с меньшим количеством деталей. –
Это то, что 'set -x' печатает с одинарными кавычками. –