2016-02-26 5 views
2

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

#!/usr/bin/fish 
command 

if $status 
    echo "Oops error" 
else 
    echo "Worked OK" 
    #... 
end 

И получаю сообщение об ошибке:

рыбы: Переменные могут не как команды. Вместо этого определите функцию «статус функции»; 0 $ argv; конец". См. Раздел справки для команды функции, набрав «help function».

Сообщение выглядит довольно прямолинейно, но никакая «определяющая функция вроде ...» или «справочная функция» не помогает решить проблему.

Существует также команда «тест», которая звучит многообещающе. Но документы говорят, что они должны использоваться для проверки файлов ...

Как это простую вещь сделать с рыбной раковиной?

Хех ... А почему вся документация SO вводит в заблуждение? ..

P.S. Пожалуйста, не пишите о команде «и».

+1

Faho уже предоставил хороший ответ. Я просто хотел отметить, что я открыл проблему улучшения, https://github.com/fish-shell/fish-shell/issues/2773, чтобы улучшить ситуацию. –

ответ

5

Команда Fish test в настоящее время работает точно так же, как и тест POSIX (т. Е. Тот, который вы найдете в bash или подобных оболочках). Он имеет несколько операций, включая «-gt», «-eq», «-lt», чтобы проверить, больше ли число, равное или меньшее, чем другое число.

Итак, если вы хотите использовать тест, вы сделаете if test $status -eq 0 (0 традиционно обозначает успех). В противном случае вы можете проверить возвращаемое значение команды, поместив ее в предложение if прямо как if command (что будет верно, если команда вернет 0) - вот что пытается сделать рыба здесь, поэтому она жалуется на переменную вместо команды.

+0

Спасибо! Я использовал рыбу, учебные уроки рыболовных угодий, часто задаваемые вопросы о рыбах, google, переполнение стека. Мне жаль, что я не встретил страницу, на которую вы мне дали ссылку. И мне жаль, что я не встретил эту точную фразу «Команда теста рыбы работает точно так же, как тест POSIX», например, в помощи рыбе. – MajesticRa

+0

К этой странице можно получить доступ через онлайн-документацию (в разделе «команды», также связанные на боковой панели), «help test» (открывается локальная копия в браузере), «man test» (открывает версию страницы руководства) или 'test --help' (просто печатает его на терминале). – faho

+0

да, я вижу. Я имею в виду, что, к сожалению, документация на рыбу структурирована таким образом, что иногда не очевидно найти такие очевидные вещи. Хотя только одна эта фраза могла сэкономить мое время, когда я прочитал «help function» (это то, что рыба предлагает мне прочитать) или «help test». Один короткий пример поможет в статусе в FAQ (каждый будет проверять статус $, который он предназначен для него). – MajesticRa

Смежные вопросы