내가 이해한 바에 따르면 사용자가 루트가 아닌 경우 $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 ]]
...많은 껍질 속에.