![[[ -t 1 ]]は何をしますか?](https://linux33.com/image/69894/%5B%5B%20-t%201%20%5D%5D%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F.png)
私が理解したように、ユーザーがrootではない場合、以下の$EUID
スクリプトはsumを比較して実行されます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 ]]
...多くの殻の中で。