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

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令之显示变量和修改选项set相关的知识,希望对你有一定的参考价值。

概述

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


使用 set 命令可以更改选项,其中 + 表示关闭选项,- 表示打开选项。

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



语法

该命令的语法如下:

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

该命令支持的选项有:

选项说明
-a标示已修改的变量,以供输出至环境变量
-b使被中止的后台程序立刻回报执行状态
-C转向所产生的文件无法覆盖已存在的文件
-dShell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消
-e若指令传回值不等于0,则立即退出shell
-f取消使用通配符
-h自动记录函数的所在位置
-HShell可利用”!”加<指令编号>的方式来执行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

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Linux命令之显示变量和修改选项set的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令之设置只读变量和函数readonly

Linux命令之获取和修改主机名hostname

Linux命令之查看环境变量env

linux查看和修改PATH环境变量的方法

Linux命令之修改主机名hostnamectl

Linux命令之删除变量unset