Я занят написанием сценария оболочки (используя Bash), где мне нужно заполнить некоторую переменную из возвращенного результата другой команды.
Поэтому я использую такой синтаксис, как этот:
VAR=`command 2>/dev/null`
Но когда я искал информацию о оболочках скриптов, я часто обнаруживал, что вышеприведенного можно достичь, используя также следующий синтаксис:
VAR=$(command 2>/dev/null)
Оба работают на меня (я получил ожидаемый результат в обоих случаях), и поэтому мне интересно, могу ли я по-прежнему использовать обе формы взаимозаменяемо или мне нужно придерживаться одной формы, чтобы быть уверенным, что она будет соответствовать будущей эволюции ракушка ?
command-line
Джастин
источник
источник
Ответы:
Используйте доллар. Обратные пометки являются полу-устаревшими , потому что они более сложны в использовании (см. Ссылку), и у них нет никаких преимуществ, если вы не занимаетесь гольфом кода и абсолютно не нуждаетесь в сохранении одного символа. Они, вероятно, не будут удалены из популярных оболочек в ближайшее время, так что пока вы в безопасности.
источник
Придерживайтесь обозначения знака доллара,
$()
когда вы можете. Обратные пометки становятся громоздкими / запутанными, когда вы начинаете нуждаться в вложенных цитатах. Пример:Замена обратных галочек
$()
дает тот же результат, и его легче читать (меньше различий в кавычках различаемых углов):Это и каждая кавычка (одинарная кавычка, двойная кавычка, обратная кавычка) означает что-то другое в оболочке, поэтому использование $ может помочь устранить уровень сложности. И разработчик, который следует за вами, поблагодарит вас, потому что ему / ей будет легче выяснить, что вы сделали.
источник