Первая часть строки, вплоть до ||
, запускает программу tempfile
и записывает стандартный вывод в переменную tempfile
, отбрасывая ошибки.Также имеется состояние выхода: либо ноль для успеха, либо ненулевое значение для сбоя (либо сбой при выполнении команды tempfile
, либо сбой, о котором сообщает команда tempfile
при его запуске).
The ||
означает «если LHS (левая сторона) потерпела неудачу, тогда выполните RHS (правая сторона)».
Итак, если у команды tempfile
возникла проблема, будет использоваться RHS,назначение более простого временного имени файла для tempfile
(переменная).
В целом, оно эквивалентно:
if tempfile=`tempfile 2>/dev/null`
then : OK
else tempfile=/tmp/test$$
fi
Только в одной строке, а не в четырех.
Я уверен, что идея состоит в том, чтобы получить что-то в $tempfile
независимо от того, существует ли на компьютере команда tempfile
.