Сравнение Bash и операторы выражения

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

Которые чаще всего и широко используются? Я не знаю, когда использовать который и почему.

  1. test, [[ ]] или [ ] или даже (( ))
  2. $((exp)) или $[exp]
  3. -gt или >, ge или >= и т.д.
  4. когда использовать < и > или ( ) и когда мы должны выйти из него с \: \< \( и т.д.
  5. == или = (сравнения строк)

Я знаю основные различия между [ и [[ но другими вопросами является тайна для меня.

Заранее спасибо

11
задан 30 March 2013 в 11:10

1 ответ

  • test - это встроенная оболочка, которая (очевидно) проверяет некоторые заданные условия. Некоторым более старым снарядам нужна специальная команда. Так что вы также найдете программу на /usr/bin/test.
  • [ также является программой для проверки некоторых условий. Это программное обеспечение также нуждается в закрывающей скобке, и вы можете найти его в /usr/bin/[.
  • [[…]] является альтернативой test и [. Он был разработан для оболочки Корна (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 и другим. Так что лучший вариант - заглянуть на страницу руководства. Через некоторое время вы привыкаете и знаете, когда использовать побег.

0
ответ дан 30 March 2013 в 11:10

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

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