[[ -t 1 ]] 是做什么的?

[[ -t 1 ]] 是做什么的?

据我了解,如果用户不是 root,则通过比较$EUID和来运行下面的脚本0。然后,它用于[[ -t 1 ]]决定脚本是否在终端中运行。如果是,它将使用 sudo 提示用户输入密码。否则,它将调用 gksudo 来执行此操作。

if (($EUID != 0)); then

    if [[ -t 1 ]]; then
        sudo "$0" "$@"
    else
        exec 1>output_file && rm output_file
        gksu "$0 $@"
    fi

    exit

fi

什么是[[ -t 1 ]]比较/评价?

答案1

[[ -t 1 ]]如果文件描述符 1 (STDOUT) 在终端上打开,则测试返回 true,否则返回 false。

来自:help testbash

-t FD          True if FD is opened on a terminal.

答案2

[ -t 1 ]

...或者...

test -t 1

...如果文件描述符 1 - stdout - 是 tty,则返回 true,否则返回 false。同样的道理

[[ -t 1 ]]

...在许多贝壳中。

相关内容