Править: Этот ответ является неправильным, но интересным, таким образом, я оставлю его для дальнейшего использования.
Добавление a !
к команде инвертирует код возврата.
http://tldp.org/LDP/abs/html/exit-status.html
# =========================================================== #
# Preceding a _pipe_ with ! inverts the exit status returned.
ls | bogus_command # bash: bogus_command: command not found
echo $? # 127
! ls | bogus_command # bash: bogus_command: command not found
echo $? # 0
# Note that the ! does not change the execution of the pipe.
# Only the exit status changes.
# =========================================================== #
Одинарные левые кавычки старого стиля ` `
действительно рассматривайте обратные косые черты и немного отличающееся вложение. Новый стиль $()
интерпретирует все промежуточное ( )
как команда.
echo $(uname | $(echo cat))
Linux
echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
работы, если вложенных одинарных левых кавычек оставляют:
echo `uname | \`echo cat\``
Linux
забава обратной косой черты:
echo $(echo '\\')
\\
echo `echo '\\'`
\
Новый стиль $()
относится ко всем совместимым на POSIX оболочкам.
Как mouviciel указанный, старого стиля ` `
могло бы быть необходимым для более старых оболочек.
Кроме технической точки зрения, старого стиля ` `
имеет также визуальный недостаток:
I like $(program) better than `program`
'`'`''`''`'`''`'
(и использование SE ` `
для собственной цели это была боль, пишущий этот ответ :)
Заметное отличие, которое я наблюдаю, - то, что Вы не можете вложить обратные галочки, в то время как можно вложить $()
. Возможно, оба существуют по причинам прежней версии. Точно так же .
и source
команды являются синонимами.
source
. Тире является одним примером. регистрация
– Paused until further notice.
13.01.2011, 18:40
$(...)
и `...`
являются стандартными (последний, удержавший от использования) в то время как .
является стандартным, но нет source
– Stéphane Chazelas
25.10.2012, 13:17
(t)csh
разве они не могут быть вложены. (t)csh
не поддерживать $(...)
все же. Они действительно поддерживают source
(и нет .
)все же.
– Stéphane Chazelas
01.08.2014, 15:28
$()
не работает со старой Оболочкой Bourne. Но это были годы десятилетия, с тех пор как я работал со старой Оболочкой Bourne.
Другое примечание, $()
будет использовать больше системного ресурса, чем использование обратных галочек, но немного быстрее.
В Освоении сценариев оболочки Unix Randal K. Michael сделал тест в главе, названной "24 Способа Обработать Файл Линию за линией".
$()
делает Ваш сценарий на один байт больше, чем если бы он использовал `
(принятие Вас не вкладывает их и не использует обратные косые черты в). Относительно которого было бы быстрее для парсинга, который будет варьироваться между оболочками и был бы не важен как незначительный по сравнению со стоимостью создания канала и разветвления процесса, которые управляют, замена влечет за собой.
– Stéphane Chazelas
02.12.2016, 11:45
В дополнение к сказанному другими здесь, вы можете использовать обратные знаки для имитации встроенных комментариев:
echo foo `# I'm a comment!` bar
Вывод: foo bar
.
Для получения дополнительной информации см: https://stackoverflow.com/a/12797512 (Обратите внимание также на комментарии под этим постом.)
{ }
обычно называется "фигурными скобками" или "заключает в фигурные скобки" en.wikipedia.org/wiki/Braces_ (пунктуация) #Braces – Jørn Schou-Rode 13.01.2011, 23:35`
мертвая клавиша, таким образом, я должен ввести любого двойная обратная галочка (что-то, что я обычно забываю, что могу даже сделать), или обратная галочка затем располагают с интервалами, который является болью. – Darkhogg 04.04.2014, 19:39