mount

 

列出/mnt/sd[a-z][1-9]这样的文件夹,然后卸载它们,并判断是否为空删除

MOUNT=`mount | grep -o '/mnt/sd[a-z][1-9]'`
    for i in $MOUNT; do
        if [ -d $i ];then
            umount $i;
            if [ "`ls -A $i`" = "" ] ;then
                rm -r $i;
            else
                echo "directory is not empty"
            fi
        else
            echo "no such directory"
        fi    
    done

 

###############################################################
#检测U盘并挂载 
############################################################### 
#!/bin/sh

udisk=$(fdisk -l|grep /dev/sd[a-z][0-9]|cut -d ' ' -f 1)
echo $udisk
if [[ -n $udisk ]] 
then 
result=$(mount $udisk /usbMnt/)
echo result=$result
if [[ -n $result ]]
then
echo "not mount success"
else
echo "has mounted!" 
fi
else
echo "has no u-disk!"
fi
exit 0

 


上面脚本是我挂载U盘的,第一个udisk=$(fdisk -l|grep /dev/sd[a-z][0-9]|cut -d ' ' -f 1)可以检测到盘符,获取到命令的执行结果;但是第二个result=$(mount $udisk /usbMnt/)却一直是空,即result一直是空,其实当U盘挂载不成功内核或者驱动会返回一串结果值的,我的理解是获取命令执行结果并不是获取驱动或者内核的返回值,它只在命令处理字符串的时候才适用,比如获取ls等;请问此种情况下如何通过命令判断U盘是否挂载成功?也即是如何在执行命令后获取内核返回的错误信息

 

又试了下,将mount a b 2>err.txt这种语句重定向到文件是有结果的;但是当你访问已经拔出的U盘时(之前挂载的文件夹),错误结果却不能重定向,我感觉这个错误结果和访问语句是不是已经脱离了?
ls /usbMnt/ 2>err.txt
FAT-fs (sda4): Directory bread(block 65536) failed
FAT-fs (sda4): Directory bread(block 65537) failed
此时查看err.txt,文件是空的,请问如何捕获这种错误输出呢?难道将所有的错误输出都重定向到文件吗?像这种err如何通过脚本检测出来呢?

 

posted @ 2018-01-04 16:14  XZHDJH  阅读(392)  评论(0)    收藏  举报