Этот случай else
недоступен, поскольку у вас уже есть случай else
для этого ], если
. То, чего вы хотите достичь, может, например,это можно сделать следующим образом:
if ($#argv != 2) then
echo "Two arguments required"
exit 1
else if (! -f $argv[1]) then
echo "File does not exist"
exit 1
else if (! -d $argv[2]) then
echo "Not a valid directory"
exit 2
endif
echo "hi"
Комментарий @llua действительно помог решить проблему со стандартным вводом, спасибо!
Мой вариант использования требовал еще одного отклонения от связанного вопроса. Я использую рейнджер для изменения рабочего каталога (, используя этот трюк ). В этом случае zle redisplay
необходимо заменить на zle reset-prompt
, чтобы правильно изменить подсказку (, см. этот вопрос). Полное решение становится:
run_ranger () {
echo
ranger --choosedir=$HOME/.rangerdir < $TTY
LASTDIR=`cat $HOME/.rangerdir`
cd "$LASTDIR"
zle reset-prompt
}
zle -N run_ranger
bindkey '^f' run_ranger