据我了解,如果用户不是 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 test
bash
-t FD True if FD is opened on a terminal.
答案2
[ -t 1 ]
...或者...
test -t 1
...如果文件描述符 1 - stdout - 是 tty,则返回 true,否则返回 false。同样的道理
[[ -t 1 ]]
...在许多贝壳中。