csh встроенные операторы if

Я пытаюсь добавить скрипт для проверки условий перед выполнением команды в моем файле .cshrc. Этот скрипт проверки возвращает 0, если условия недостаточны, и 1 в противном случае. (Я понимаю, что это противоречит соглашению, но я подумал, что это будет проще для операторов if.)

Вот что я пробовал, заменив команду на echo "ok":

./checker.sh && echo "ok"

Выдает "ok", хотя checker.sh возвращает 0.

test ./checker.sh && echo "ok"

Выдает "ok" даже при том, что checker.sh возвращает 0, но также подавляет сообщения об ошибках в checker.sh.

if ( ./checker.sh ) then echo "ok" endif

Выдает синтаксическую ошибку оператора if.

Я хочу превратить это в псевдоним, отсюда однострочное ограничение, например.

alias doAction './checker.sh && echo "ok"'

Как это сделать с помощью (t)csh без прямого вызова команды в сценарии проверки?

Спасибо!


person tomocafe    schedule 04.11.2013    source источник
comment
если вы хотите выполнить код при ненулевом выходе, выполните checker.csh || echo "ok"   -  person agentp    schedule 05.11.2013
comment
Чтобы избежать синтаксической ошибки для однострочных операторов if в csh, не используйте then и endif. Например: if ( 1 ) echo "y".   -  person Andrew Stein    schedule 05.11.2013


Ответы (1)


Я изменил сценарий на exit 0, когда НЕТ проблем, и выхожу ненулевым числом, когда есть проблема. затем

./checker.sh && echo "ok"

ведет себя как хочет...

Примечание для тех, кто может прочитать это: приведенная выше конструкция «тест» не эквивалентна оператору if в стиле C.

if(./checker.sh){
  echo "ok"
}
person tomocafe    schedule 04.11.2013
comment
en.wikipedia.org/wiki/Rubber_duck_debugging, по-видимому, также относится к публикации вопросов в stackoverflow... - person tomocafe; 04.11.2013