Мне просто интересно, test
Команда Linux.test - команда linux
Есть ли результат от test -f FILE
, который я мог бы захватить с помощью переменной?
Как узнать, успешно ли это test
или нет?
Мне просто интересно, test
Команда Linux.test - команда linux
Есть ли результат от test -f FILE
, который я мог бы захватить с помощью переменной?
Как узнать, успешно ли это test
или нет?
Команда test
устанавливает код выхода. Вы можете проверить значение в $?
, но обычно вам это не нужно. Вместо этого вы используете конструкцию потока управления, такую как while
или if
, которая делает это за кулисами для вас.
while test -e "$myfile"; do
if grep -q 'fnord' "$myfile"; then
echo "Success! Play again."
dd if=/dev/urandom count=1 | base64 >"$myfile"
else
break
fi
done
Обратите внимание, как while
анализирует код выхода из test
и if
анализирует код выхода из grep
. Каждая из этих программ - и вообще любая полезная утилита Unix - записывается так, что она возвращает нулевой код выхода при успешном выполнении, в противном случае - ненулевое значение.
test
, возможно, несколько нечетный в этом все. Исторически сложилось так, что это была небольшая кухонная раковина, чтобы избежать необходимости нагружать синтаксис оболочки большим количеством тестов на строковые и файловые свойства (что может быть ретроспективно, было немного недовольным дизайнерским решением - это сегодня все-таки открывает новички).
Вы также увидите много новичков, которые не забирали эту идиому, и писать код кренделя, как
test -e "$myfile"
while [ $? -eq 0 ]; do
....
Yo Dawg, я слышал, вы, как работает test
так я бегу test
к test
выход из сначала test
.
Итак, какая оболочка? csh, bash, sh, ksh, ... –
@EdHeal Я использую bash – John
'if test -f FILE; затем echo "test returnd true"; else echo "test returnd false"; fi' Смотрите: 'help test' – Cyrus