i=0
until [ "$((i+=1))" -gt 5 ] || {
printf '\nPrompt: '
read finding && [ -n "$finding" ]
};do printf '\nINVALID:\tTry again.\n'
done <>/dev/tty >&0
grep -- "${finding:?INSUFFICIENT INPUT!}" <info.txt ||
! printf '%s:\tNot found in database.' "$finding" >&2
Вы должны проверить не только то, что $finding
не является нулевым, но и то, что read
успешно завершается - и поэтому настройка его в первую очередь. В описанном выше цикле перед выходом из состояния w/ error 5 раз будет запрошена и попытка прочитать из терминала строку с не нулевым входным сигналом.
"${расширение:?SUBSTITUTE ONLY IF UNSET OR NULL! >STDERR}"
$finding
обрабатывается как побочный эффект параметра ${
${:?
expansion}
и приводит к сообщению, записанному на stderr
и немедленному выходу из неинтерактивной оболочки. cmd ...
- Это синтаксическая ошибка - попытка перенаправления из файла, который не может быть открыт (например, из файла, который не существует или для которого действующий UID/GID не имеет разрешений на чтение), и поэтому если
info.txt
по каким-либо причинам является недействительным, неинтерактивная оболочка записывает диагностическое сообщение на stderr
и также немедленно выходит из него. Это также верно, если попытка прочитать
превышает ограничения, установленные в ulimit
- и одинаково применимо к начальному циклу до ... выполнения <>в >&out
.
grep ... || ! printf '%s: fmt' "$param"
grep
, единственные два возможных результата вышеуказанной формы - это то, что grep
хотя бы один раз совпадает с шаблоном в "$finding"
и записывает соответствующие строки в stdout
или что он не совпадает даже один раз и возвращает значение, отличное от 0. В последнем случае printf
записывает информационное сообщение на stderr
и возвращает 1. Плазма 5.2 вышла и считается стабильной версией. Конечно, есть еще кое-что, что нужно сгладить, и большинство плазменных смайликов и некоторые программы еще не портированы.
AFAIK ни один дистрибутив не использует его по умолчанию. Вы можете легко установить его в Arch, Kubuntu и т.д. Я пробовал и то, и другое (я уже давно пользуюсь Arch), и на данный момент реализация Kubuntu кажется более полной. Тем не менее, для 100% рок солидной системы я бы остался с KDE4 на некоторое время дольше и подождал 5.3 или 5.4, даже с 5.2 еще есть вещи, которые нужно исправить. Тем не менее, его уже можно использовать прямо сейчас, если Вы принимаете пару глюков. Я нахожу это нормальным на моей вторичной системе, на моей первичной я останусь с KDE4 на некоторое время дольше.
Кстати, это потрясающе.
AFAIK, нет устойчивых версий плазмы 5 доступно (я думаю, что это все еще работает в процессе).
Например, Arch Linux имеет предварительную поддержку плазмы 5, но поскольку сейчас все еще есть некоторые проблемы. Если вы хотите, вы можете прочитать вход в их вики об этом для получения дополнительной информации.