加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Shell脚本中 /Dev/Null 的实现

发布时间:2021-05-15 11:07:56 所属栏目:Linux 来源:互联网
导读:/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中都非常有用 用途 /dev/null 通常被用于丢弃不需要

/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中都非常有用

用途

/dev/null 通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成,任何你想丢弃的数据都可以写入其中

丢弃标准输出

在写shell脚本的时候,只想通过命令的结果执行后面的逻辑,而不想命令执行过程中有一大堆中间结果输出,这时候可以把命令执行过程中的输入全部写入 /dev/null

现有 a.sh 脚本,它的功能是判断传入的系统命令是否存在,脚本内容如下


  1. #!/bin/bash 
  2.     
  3.    command -v $1 
  4.     
  5.    if [[ $? -eq 0 ]]; then 
  6.       echo "command $1 exist..." 
  7.    else 
  8.       echo "command $1 not exist..." 
  9.    fi 

执行 ./a.sh top 命令,输出如下


  1. [tt@ecs-centos-7 dev_test]$ ./a.sh top 
  2. /bin/top 
  3. command top exist... 

说明: command -v 命令名 是查找指定命令名的命令是否存在,如果存在,输出指定命令名的路径,否则,不做任何输出

$? 表示前一条命令的执行结果, 0 表示成功,其他表示失败

脚本的执行结果中先输出了 top 命令的路径,紧接着输出了top命令存在的日志

把 command -v $1的结果重定向到 /dev/null 可以屏蔽掉 top命令路径的输出,调整之后的a.sh 内容如下


  1. #!/bin/bash 
  2.   
  3.  command -v $1 >/dev/null 
  4.   
  5.  if [[ $? -eq 0 ]]; then 
  6.     echo "command $1 exist..." 
  7.  else 
  8.     echo "command $1 not exist..." 
  9.  fi 

再次执行 ./a.sh top,结果如下


  1. [tt@ecs-centos-7 dev_test]$ ./a.sh top 
  2. command top exist... 
  3. [tt@ecs-centos-7 dev_test]$ 

从执行结果可以看出,把 command -v $1 的中间结果重定向到 /dev/null 之后,就不会再输出top命令的路径了

而且,修改之后的脚本执行结果和原来的结果是一样的

丢弃标准错误输出

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读