В скриптах bash лучше ли использовать скобки, чем обратные кавычки?

Когда я научился писать сценарии bash, я поместил вывод команды в переменную с помощью обратных кавычек, например:

ALLPDFS=`find . -name \*.\[pP\]\[dD\]\[fF\]`

но большинство "официальных" скриптов (скачанных в пакетах Linux и т. д.) используют обозначение со знаком доллара и скобками:

ALLPDFS=$(find . -name \*.\[pP\]\[dD\]\[fF\])

Будет ли веская причина выбрать одно из другого? Я полагаю, что вторая более соответствует другому синтаксису bash. Для времени, хотя я пытался

time for (( i=0; i<10; i++ )); do  a=`find . -name \*.\[pP\]\[dD\]\[fF\]`; done
time for (( i=0; i<10; i++ )); do a=$(find . -name \*.\[pP\]\[dD\]\[fF\]); done

и это не имеет никакого значения. Один лучше для использования стека / кучи возможно?

1 ответ

Решение

$() нотация предпочтительна, когда вам нужно ее вложить, т.е. вы можете написать

echo $(echo $(echo 123))

но эквивалент в `` было бы

echo `echo \`echo 123 \``

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

Другие вопросы по тегам