O teste [[ -t 1 ]]
retornará verdadeiro se o descritor de arquivo 1 (STDOUT) estiver aberto no terminal, caso contrário, será falso.
De help test
em bash
:
-t FD True if FD is opened on a terminal.
No meu entender, o script abaixo é executado se o usuário não for root comparando $EUID
e 0
. Em seguida, ele usa [[ -t 1 ]]
para decidir se o script está sendo executado em um terminal ou não. Se estiver, usará o sudo para solicitar uma senha ao usuário. Caso contrário, ele irá envenenar o gksudo para fazê-lo.
if (($EUID != 0)); then
if [[ -t 1 ]]; then
sudo "$0" "$@"
else
exec 1>output_file && rm output_file
gksu "$0 $@"
fi
exit
fi
O que é [[ -t 1 ]]
comparando / avaliando?
[ -t 1 ]
... ou ...
test -t 1
... retorna verdadeiro se o descritor de arquivo 1 - stdout - for um tty e false caso contrário. O mesmo é verdade de
[[ -t 1 ]]
... em muitas conchas.
Tags test shell-script