Почему команда test лучше оператора case для сравнения строк и чисел в POSIX -совместимом сценарии оболочки?

То, что вы видите, является ожидаемым поведением. ln -sведет себя аналогично mv, cpи ln. Если второй аргумент ссылается на существующий каталог, mv file dirперемещает файл в dir, cp file dirкопирует файл в dir, аln file dir(с или без-s)создает ссылку на dir..

-5
13.02.2021, 01:01
1 ответ

Из обсуждения в разделе комментариев я думаю, что нет существенных преимуществ использования testвместо case.

Преимуществаtest

  • Делает код короче.
  • Упрощение числового сравнения.
  • Также для типа файла (не по теме ).
  • (хотя kshism )Двойные скобки для регулярного выражения.

Преимуществаcase

  • Всегда встроенный корпус -в.
  • Более гибкое сопоставление (, т.е.case str in ([Yy][Es][Ss])).
  • Также для числового сравнения, если вы используете доллар -двойные -круглые скобки(case $(( x > y )) in (1)); на самом деле быстрее, чем тестовая команда .

Заключение

Возможно, вам следует использовать то, что вы предпочитаете. Я думаю, что причина, по которой testиспользуется чаще, заключается в том, что так получилось.

-1
18.03.2021, 22:36

Теги

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