O que faz [[-t 1]]?

3

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?

    
por Gilles 28.07.2015 / 00:20

2 respostas

7

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.
    
por 28.07.2015 / 00:27
5
[ -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.

    
por 28.07.2015 / 00:27