Использование обратных символов или доллара в сценариях оболочки

Я занят написанием сценария оболочки (используя Bash), где мне нужно заполнить некоторую переменную из возвращенного результата другой команды.

Поэтому я использую синтаксис, подобный следующему:

VAR=`command 2>/dev/null`

Но когда я искал информацию о оболочках сценариев, я часто обнаруживал, что вышеприведенного можно достичь, используя также следующий синтаксис:

VAR=$(command 2>/dev/null)

Оба работают на меня (я получил ожидаемый результат в обоих случаях), и поэтому мне интересно, могу ли я использовать обе формы взаимозаменяемо или мне нужно придерживаться одной формы, чтобы быть уверенным, что оставаться совместимым с будущей эволюцией оболочки?

9
задан 24 June 2014 в 15:35

2 ответа

Используйте доллар. Обратные галочки полуудерживаются от использования , потому что они более сложны для использования (см. ссылку), и нет никаких преимуществ для них, если Вы не делаете гольф кода и абсолютно должны сохранить отдельный символ. Они, вероятно, не будут удалены из популярных оболочек в ближайшее время, хотя, таким образом, Вы - безопасное использование любого на данный момент.

13
ответ дан 24 June 2014 в 15:35

Палка с нотацией $() знака доллара каждый раз, когда Вы можете. Обратные галочки становятся громоздкими/сбивающими с толку, когда Вы начинаете должными быть сделать вложенное заключение в кавычки. Исключая:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

Замена обратных галочек с $() урожаи тот же вывод, и легче читать (меньше кавычек переменных углов для различения):

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

, Что, и каждая кавычка (одинарная кавычка, двойная кавычка, обратная галочка) означает что-то другое в оболочке, так использование $ может помочь удалить уровень сложности. И разработчик, который следует за Вами, поблагодарит Вас, поскольку у него будет более легкое время, выясняя то, что Вы сделали.

3
ответ дан 24 June 2014 в 15:35

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

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