Linux命令之显示变量和修改选项set

概述

set 命令主要是显示系统中已经存在的变量和修改选项。

在这里插入图片描述
使用 set 命令可以更改选项,其中 + 表示关闭选项,- 表示打开选项。

注:set 命令不能够定义新的变量,但能改变变量的值。



语法

该命令的语法如下:

set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

该命令支持的选项有:

选项 说明
-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

在这里插入图片描述

查找指定变量

如果要查找指定变量,可以通过 grep 命令来检索。命令格式如下:

# 语法
set | grep 变量名
# 示例,查找 msg 变量
set | grep msg

在这里插入图片描述

查看所有选项的设置情况

如果要查看所有属性的设置情况,即是打开还是关闭状态。命令格式如下:

set -o

在这里插入图片描述

关闭或打开指定选项

关闭或打开指定选项的命令格式如下:

# 语法
# 关闭指定选项
set +o 选项名
# 打开指定选项
set -o 选项名

# 示例
# 关闭 vi 选项
set +o vi
# 打开 vi 选项
set -o vi

在这里插入图片描述

-e 选项

可以把 set -e 放在脚本的开头位置,它之后出现的代码,一旦出现了返回值非零的情况的,整个脚本就会立即退出。

#!/bin/bash

set -e
# 之后的脚本内容,一旦某个命令的返回值出现了非零则会退出脚本

set +e 是默认的状态,表示后续的命令如果返回值不是零,脚本仍然向下执行。

注:set +e 是关闭 -e 选项;set -e 表示打开 -e 选项。

-u 选项

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

set -u 通常也是放在开头,而 set +u 可以关闭该选项。

#!/bin/bash

# 默认是 set +u 关闭选项的,所以输出不存在的变量不会报错也不会结束脚本
echo "$hello"

# 开启 -u 选项,之后的代码中如果遇到不存在的变量则会报错并且停止执行
set -u
echo "$test"

在这里插入图片描述

获取位置参数

在调用 shell 脚本时,通常需要传递参数给 shell 脚本,这些参数就是位置参数,但如果想要在没用用 shell 脚本时也使用位置参数,那么就可以用 -- 来实现。这个符号 -- 是用来分隔后面的内容的,这样 set 命令就不会把后面的选项和内容解析成 set 本身的选项,而是当作位置参数,可以通过 $1 这样的格式来获取:

set -- p1 p2 -host -3

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/125242668