Shell 如何判断(在sh中)是否通过NFS装载目录

Shell 如何判断(在sh中)是否通过NFS装载目录,shell,nfs,Shell,Nfs,df-t nfs$目录 如果目录已装入NFS,则返回两行输出;如果未装入NFS,则返回一行输出 如果df的某些版本未安装NFS,则会给出退出状态1,但GNU coreutils 5.3.0不会 if [ `df -t nfs . | wc -l` = 2 ]; 感觉不雅,同事们说它没有充分检查错误。有更好的方法吗?您可以随时检查mtab。如果您使用strace and look,df只会在一个平面文件中记录所有装入的文件系统。我想如果您在Linux中运行此程序,也可以使用/proc/moun

df-t nfs$目录

如果目录已装入NFS,则返回两行输出;如果未装入NFS,则返回一行输出

如果df的某些版本未安装NFS,则会给出退出状态1,但GNU coreutils 5.3.0不会

if [ `df -t nfs . | wc -l` = 2 ]; 

感觉不雅,同事们说它没有充分检查错误。有更好的方法吗?

您可以随时检查mtab。如果您使用strace and look,df只会在一个平面文件中记录所有装入的文件系统。我想如果您在Linux中运行此程序,也可以使用/proc/mounts。

重复问题。简短的回答,使用
stat
命令。

我已经尝试了一些选项,但你的选项对我来说仍然更优雅。你的同事有没有提到这种方法无法避免的错误+好的,我发现了一个问题。如果第一个输出列非常长(例如,
nfs\u server:/long/mount/point
),则
df
会将输出分成两行,最后得到
wc-l=3
。如果[..-gt 1]@ShawnChin将您的解决方案更改为
,则很容易解决问题:如果您应用
--portability
/
-P
选项,则不会换行太长。非常适合机器加工。(使用
df(GNU coreutils)7.4测试)使用
/etc/mtab
将需要更多的解析/处理。如果目标目录包含一个指向挂载点的sym链接,则也会失败。+1正确定位。从链接的答案来看,如果[$(stat-f-L-c%T.)==“nfs”]
,则等效的解决方案是