Когда я научился писать сценарии 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 ответ1

4

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

echo $(echo $(echo 123))

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

echo `echo \`echo 123 \``

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .