Linux中set命令使用总结

Linux中set命令总结

  • set命令

    功能:用来设置所使用shell的执行方式,可依照不同的需求来进行设置。

  • set语法

    set [+ -abCdefhHklmnpPtuvx]

  • set参数

    • a:表示已修改的变量,以供输出至环境变量
    • b:使被中止的后台程序立刻回报执行状态
    • C:转向所产生的文件无法覆盖已存在的文件
    • d:Shell预设会用杂凑表记忆使用过的命令,以加速指令的执行。使用-d参数可取消。
    • e:若指令传回值不等于0,则立即退出shell
    • f:取消使用通配符
    • h:自动记录函数的所在位置
    • H Shell:可利用”!”加<指令标号>的方式来执行history中记录的指令
    • k:指令所给的参数都会被视为此指令的环境变量
    • l:记录for循环的变量名称
    • m:使用监视模式
    • n:只读取指令,而不实际执行
    • p:启动优先顺序模式
    • P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号链接
    • t:执行完随后的指令,即退出shell
    • u:当执行时使用到未定义过的变量,则显示错误信息
    • v:显示shell所读取的输入值
    • x:执行指令后,会先显示该指令和该指令之后的参数
    • +<参数> 取消某个set曾启动的参数
  • set命令使用

    • 执行脚本时,与到不存在变量,bash报错并停止

      ! /bin/bash
      
      set -u          # 注释与不注释执行结果不同
      #set -o nounset # 与set -u效果一样
      echo $a
      echo hello
      
    • 运行结果之前,先输出执行的指令

      #! /bin/bash
      
      set -x          # 执行指令前,先输出指令
      #set -o xtrace  # 与set -x效果一样  
      echo hello
      
    • 运行命令失败后,停止执行后面指令

      #! /bin/bash
      
      set -e
      #set -o errexit
      #hehe || { echo "hehe not exits"; exit 1;}  # 等效于set -e
      #if ! hehe; then echo "hehe not exits"; exit 1; fi  # 等效于set -e
      #hehe
      #if [ "$?" -ne 0 ]; then echo "hehe not exits"; exit 1; fi  # 等效于set -e
      hehe
      echo hello
      

      **注意:set -e不适合管道命令,管道命令需要使用如下命令实现:

      #! /bin/bash
      
      set -eo pipefail
      hehe | echo hello1
      echo hello2
      
  • 参考文献
    http://www.runoob.com/linux/linux-comm-set.html
    http://www.ruanyifeng.com/blog/2017/11/bash-set.html

你可能感兴趣的:(Linux学习,set命令使用详解,set命令参数说明,set使用举例)