让是在以下 shell 序列中定义的文件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
$
Run Code Online (Sandbox Code Playgroud)
为什么它在启动echo $x
时停止com
(在前台)?那不应该读fic
吗?
if tty>/dev/null ; then
read x
else
read x<fic
fi
Run Code Online (Sandbox Code Playgroud)
意味着,fic
只有在tty
返回错误时才会读取。当它发现它stdin
不是终端时会发生这种情况。通常,当脚本在管道中或通过 运行它时nohup
,或作为 cron 作业运行时,或远程通过ssh -T
...
使用[ -t 0 ]
的条件是几乎相同的(快,因为[
又名test
通常是一个内置的这些天)。
归档时间: |
|
查看次数: |
208 次 |
最近记录: |