파일을 만들고 다음 셸 순서로 액세스 권한을 정의합니다 com
.fic
$ cat com
if tty>/dev/null
then read x
else read x<fic
fi
echo $x
$ cat fic
abcd
$ ls -l com fic
-r-xr-xr-x 1 jmr ens 70 Jan 22 09:41 com
-r--r--r-- 1 jmr ens 5 Jan 22 09:41 fic
$
echo $x
시작 시(포그라운드에서) 중지되는 이유는 무엇입니까 ? 읽어야 하는 것 com
아닌가 fic
?
답변1
if tty>/dev/null ; then
read x
else
read x<fic
fi
즉, fic
오류가 반환된 경우에만 읽혀집니다. tty
이는 터미널이 아니라는 것을 발견했을 때 stdin
발생합니다 . 일반적으로 이는 스크립트가 파이프라인에 있거나 nohup
cron 작업을 통해 또는 원격으로 실행될 때 발생합니다 ssh -T
.
조건부로 사용하는 것은 [ -t 0 ]
거의 동일합니다( [
현재 aka가 일반적으로 내장되어 있으므로 더 빠릅니다).test
답변2
com 셸 스크립트가 포그라운드에서 실행되면 read
실제 tty
.
행을 입력하면 read
해당 행이 종료되고 해당 행이 변수로 설정됩니다 x
.