set命令:
1. 介绍及用法
- set命令用于设置shell,set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。
- set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。
- 使用set更改shell特性时,符号”+”和”-“的作用分别是打开和关闭指定的模式。
1.1. 语法
set [+-abCdefhHklmnpPtuvx]
1.2. 命令参数说明
-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曾启动的参数。
1.3 常用参数及作用
- 不带参数的set命令用来显示环境变量
linux@ubuntu:~$ 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脚本碰到错误会报错,但会继续执行后面的命令。
注:set +e表示关闭-e选项,set -e表示重新打开-e选项。
例如,test.sh脚本内容如下:
#!/bin/bash
set -e
hello
echo "Hello set"
执行结果如下:
linux@ubuntu:~$ sudo chmod +x ./test.sh
linux@ubuntu:~$ ./test.sh
test.sh: 4: test.sh: hello: not found