shell脚本如何获取命令执行后的结果

还没想好写什么 2015-08-27 05:12:51
###############################################################
#检测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盘是否挂载成功?也即是如何在执行命令后获取内核返回的错误信息
...全文
27050 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
又试了下,将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如何通过脚本检测出来呢?
  • 打赏
  • 举报
回复
引用 1 楼 iasky 的回复:
重定向结果到临时文件
效果好像一样
  • 打赏
  • 举报
回复
mount $udisk /usbMnt/ > tmp.txt,生成了文件但是文件是空的,但是终端还是有输出
iasky 2015-08-27
  • 打赏
  • 举报
回复
重定向结果到临时文件

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧