Я новичок в программировании Bash. Я прочитал два хороших, длинных руководства, но они запутались в моей голове об операторах и ключевых словах.
Какие из них более широко и широко используются? Я не знаю, когда использовать, что и почему.
test
,[[ ]]
Или[ ]
даже(( ))
$((exp))
или$[exp]
-gt
или>
,ge
или>=
т. д.- когда использовать
<
и>
или( )
и когда мы должны избежать его\:
\<
\(
и т. д. ==
или=
(сравнение строк)
Я знаю , что основные различия между [
и , [[
но и другими вопросами являются для меня загадкой.
заранее спасибо
Ответы:
test
это встроенная оболочка, которая (очевидно) проверяет некоторые заданные условия. Некоторым более старым снарядам нужна специальная команда. Так что вы также найдете программу на/usr/bin/test
.[
это также программа для проверки некоторых условий. Это программное обеспечение также нуждается в закрывающей скобке, и вы можете найти его на/usr/bin/[
.[[…]]
является альтернативойtest
и[
. Он был разработан для оболочки Korn (ksh
). Но вы также можете найти его в версиях Bash больше 2 и в Z Shell. У двойных скобок есть некоторые изящные особенности:-a
(И) или-o
(ИЛИ) вы можете использовать&&
или||
.=
Может сделать намного больше.((…))
эквивалентноlet
. Так что в основном так((expression))
же, какlet "expression"
. Однакоlet
вы можете использовать более одного выражения, но двойные скобки допускают только одно выражение.$((…))
(а также$[…]
) делает некоторые вычисления. Ваша оболочка пытается вычислить выражение внутри фигурных скобок и заменяет выражение результатом. Такecho $((1+1))
приводит кecho 2
. Так что ваши снаряды печатает номер 2.Каждый раз, когда вы хотите сравнить два числа, вы должны использовать опцию с тире и двумя буквами (
-ge
и-lt
т. Д.). Если вы хотите сравнить строки, вы должны использовать=
или!=
.На ваш вопрос о побеге довольно сложно ответить. Потому что это зависит от программного обеспечения, которое вы используете, кроме как из оболочки. То есть
grep
иgrep -E
нужно по-другому сбежать. Это также касаетсяsed
,awk
и другие. Так что лучший вариант - заглянуть на страницу руководства. Через некоторое время вы привыкаете и знаете, когда использовать побег.источник
if [ 2 -gt 1 ]; …
это более распространено, потому что я вижу это чаще в сценариях оболочки и насколько я знаю, что это POSIX-совместимый.