Это ошибка в bash? `return` не завершает работу при вызове из канала

Функция оболочки должна иметь возможность возвращать значение, которое вам нравится:

checktype() {
    if [ ! -f "$1" ] ; then 
        echo 'Irregular file'
        return 1
    fi 
    if [ ! -r "$1" ]; then 
        echo 'Unreadable file'
        return 2 
    fi
    return 0
}
$ checktype /dev/stdin ; echo $?
Irregular file
1

Кроме того, test - ужасное имя для псевдонима или функции, поскольку это стандартный ( встроенная) утилита.


Я понимаю, что псевдоним - ужасный выбор, но в настоящее время он требуется профессору.

Хорошо, это немного меняет ситуацию. Я предлагаю показать профессору более подходящее решение и объяснить, почему простое решение не работает.

Но в случае, если это не сработает, и вы действительно должны использовать псевдоним, учтите, что возвращаемое значение на самом деле является просто возвращаемым значением последней выполненной команды. У вас должна быть возможность настроить что-то, что возвращает желаемое значение ...

(Если это домашнее задание, я не думаю, что было бы справедливо сразу давать полное решение. Спойлеры ниже.)

Подсказка: Вы уже использовали команду, возвращающую произвольное значение.

16
19.09.2015, 21:44
0 ответов

Теги

Похожие вопросы