Объедините условия if с функцией contains в оболочке fi sh - PullRequest
0 голосов
/ 18 июня 2020

Кажется, я не могу объединить несколько условий if с функцией contains, см. Этот пример:

> function if_test
      if contains "h" $argv; or contains "-h" $argv
          functions if_test
          return
      end
  end
> if_test h
# ... works fine.
> if_test -h
# ... shows documentation of contains

Это странно, потому что следующие функции работают так, как задумано, так почему же это разные?

> if true; and false
     echo what
  else
    echo how
  end
how

> if true; or false
     echo what
  else
    echo how
  end
what

1 Ответ

2 голосов
/ 18 июня 2020

-h интерпретируется как опция contains - краткая форма --help, поэтому выводится contains help. Используйте --, чтобы обозначить конец опций:

if contains h -- $argv; or contains -- -h $argv

Обратите внимание, что цитаты здесь просто плацебо - "h" в точности эквивалентно h. Если нет специальных символов (например, пробелов), кавычки ничего не меняют.

...