Может ли раковина рыбы использовать подстановочные знаки в выражении if? - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблемы с пониманием, могу ли я использовать подстановочные знаки в выражении if в рыбе.Этот переключатель / регистр работает должным образом:

# correctly echos macOS on macOS
switch "$OSTYPE"
    case 'darwin*'
        echo 'macOS'
    case '*'
        echo 'not macOS'
end

Однако я не могу заставить работать версию оператора той же вещи if.

# doesn't work - prints 'not macOS' on macOS
if [ "$OSTYPE" = 'darwin*' ]
    echo 'macOS'
else
    echo 'not macOS'
end

В zsh / bash вы можете что-то сделатькак это:

[[ $OSTYPE == darwin* ]] && echo 'macOS' || echo 'not macOS'

Или, более детально,

if [[ $OSTYPE == darwin* ]]
  then echo 'macOS'
  else echo 'not macOS'
fi

Мой вопрос заключается в том, поддерживает ли fish подстановочные знаки с переменной в выражениях if?Я делаю это неправильно?Я не могу найти пример в документах по рыбе, который говорит мне в любом случае.

ПРИМЕЧАНИЕ : Я не спрашиваю о проверке $OSTYPE в рыбе. Я знаю, что есть лучшие способы сделать это .Мой вопрос ограничен только тем, можно ли использовать подстановочные знаки в выражении if в рыбе.

1 Ответ

0 голосов
/ 14 ноября 2018

Нет.

Используйте switch, как вы сказали, или string, например,

if string match -q 'darwin*' -- "$OSTYPE"

if не важно - команда, в которой вы работаетеВаш пример - [, который является альтернативным именем для test, который является встроенным с документацией в http://fishshell.com/docs/current/commands.html#test (или man test или help test).

...