美文网首页Linux
Linux的set命令

Linux的set命令

作者: SnailTyan | 来源:发表于2019-07-24 13:05 被阅读3次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    1. set命令介绍

    set命令主要用来设置shell,在编写shell脚本时,使用set命令能设置shell的执行方式,根据需求不同,采用的参数设置也不同。set命令也用来显示系统中已存在的shell变量以及设置新的shell变量。

    2. set命令的常用参数及作用

    • set

    不带参数的set命令用来显示环境变量。

    root@3500f62fe5ae:/workspace# set
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_LINENO=()
    BASH_SOURCE=()
    BASH_VERSINFO=([0]="4" [1]="3" [2]="48" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
    BASH_VERSION='4.3.48(1)-release'
    COLUMNS=236
    CUDA_HOME=/usr/local/cuda
    CUDA_PKG_VERSION=10-0=10.0.130-1
    CUDA_VERSION=10.0.130
    CUDNN_VERSION=7.6.0.64
    ...
    
    • set -e

    -e参数表示只要shell脚本中发生错误,即命令返回值不等于0,则停止执行并退出shell。set -e在shell脚本中经常使用。默认情况下,shell脚本碰到错误会报错,但会继续执行后面的命令。

    test.sh脚本内容如下:

    #!/usr/bin/env bash
    set -e
    
    hello
    echo "Hello set"
    

    执行结果如下:

    root@3500f62fe5ae:/workspace# sh test.sh
    test.sh: 4: test.sh: hello: not found
    

    注:set +e表示关闭-e选项,set -e表示重新打开-e选项。

    • set -u

    -u参数表示shell脚本执行时如果遇到不存在的变量会报错并停止执行。默认不加-u参数的情况下,shell脚本遇到不存在的变量不会报错,会继续执行。

    test.sh脚本内容如下:

    #!/usr/bin/env bash
    echo $test
    
    set -u
    echo $hello
    

    执行结果如下:

    root@3500f62fe5ae:/workspace# sh test.sh
    
    test.sh: 5: test.sh: hello: parameter not set
    

    参考资料

    1. http://www.ruanyifeng.com/blog/2017/11/bash-set.html
    2. http://www.runoob.com/linux/linux-comm-set.html
    3. http://man.linuxde.net/set

    相关文章

      网友评论

        本文标题:Linux的set命令

        本文链接:https://www.haomeiwen.com/subject/odhxrctx.html