В скриптах 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 \``
Открывающие и закрывающие скобки различимы, поэтому нет необходимости использовать обратную косую черту.