Если автоматически проверяет код возврата:
if (darcs show repo); then
echo "repo exists"
else
echo "repo does not exist"
fi
Вы могли также выполнить команду и использовать && (логичный И) или || (логичный ИЛИ) впоследствии, чтобы проверить, успешно выполнилось ли это или нет:
darcs show repo && echo "repo exists"
darcs show repo || echo "repo does not exist"
Перенаправление stdout
и stderr
может быть сделан однажды с exec
exec 6>&1
exec 7>&2
exec >/dev/null 2>&1
if (darcs show repo); then
repo="darcs"
elif (test -d .git); then
repo="git"
fi
# The user won't see this
echo "You can't see my $repo"
exec 1>&6 6>&-
exec 2>&7 7>&-
# The user will see this
echo "You have $repo installed"
Первые два exec
сохраняют stdin
и stderr
дескрипторы файлов, третьи перенаправления оба к /dev/null
(или где-нибудь другой, если пожелали). Последние два exec
восстановите дескрипторы файлов снова. Все промежуточное не перенаправляется к нигде.
Добавьте другие проверки repo как предложенный Gilles.
Вы пробовали g_content_type_get_icon ()
?
Вы, возможно, должны были бы звонить g_content_type_from_mime_type ()
сначала.