Linux命令之显示变量和修改选项set
  TEZNKK3IfmPf 2023年11月13日 25 0

概述

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

Linux命令之显示变量和修改选项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

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

查找指定变量

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

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

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

查看所有选项的设置情况

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

set -o

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

关闭或打开指定选项

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

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

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

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

-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"

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

获取位置参数

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

set -- p1 p2 -host -3

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   51   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   30   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   29   0   0 linuxbind
TEZNKK3IfmPf