Скрыть аргументы команд в ps

«Условное выражение» - это то, что используется внутри теста [ или [[] команды.

Итак, оба ваших вопроса 1 и 2 означают одно и то же:

  1. могут ли они использоваться в условных выражениях ?: Да.
  2. могут ли они использоваться в тестовых командах ?: Да.

Однако они не означают то, что вы думаете:

$ if [[ 1 < 2 ]]; then echo yes; else echo no; fi
yes
$ if [[ 10 < 2 ]]; then echo yes; else echo no; fi
yes
$ if [[ e < è ]]; then echo yes; else echo no; fi
yes

Это сравнение, как указано в руководстве:

True if string1 sorts before string2 lexicographically.

То есть: в порядке словаря (и зависит от переменной LC_COLLATE)

Тест с простым [ перенаправит вывод в файлы:

$ if [ e < è ]; then echo h; else echo b; fi
bash: è: No such file or directory
b

Чтобы заставить его работать, вам нужно использовать обратную косую черту (процитируйте <и>):

$ if [ e \< è ]; then echo h; else echo b; fi
h

Но я не рекомендую использовать <в тесте .


В другом месте, где могут использоваться <, <=,>,> =, находятся внутри арифметических тестов, которые могут быть частью теста if:

$ if (( 12 <= 15 )); then echo "yes"; fi
yes

Что, да, эквивалентно:

$ if [[ 12 -le 15 ]]; then echo "yes"; fi
yes

И вполне аналогично:

$ if [ 12 -le 15 ]; then echo "yes"; fi
yes

Итак, да, все это:

<= >= < >     comparison
== !=         equality and inequality 
&&            logical AND
||            logical OR

Используются для условных выражений внутри арифметических выражений:

$ if (( ( ((2<3)&&(3>7)) * 18 ) == 0 )); then echo "yes"; fi
yes

Это не те же условные выражения, что и внутри команды test .

4
26.07.2016, 00:06
0 ответов

Теги

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