首页 > 系统相关 >shell中set指令的用法

shell中set指令的用法

时间:2024-09-27 09:35:24浏览次数:1  
标签:shell 变量 用法 set 参数 指令 执行

语法

set [-可选参数] [-o 选项]

功能说明

set 指令可根据不同的需求来设置当前所使用 shell 的执行方式,同时也可以用来设置或显示 shell 变量的值。当指定某个单一的选项时将设置 shell 的常用特性,如果在选项后使用 -o 参数将打开特殊特性,若是 +o 将关闭相应的特殊特性。而不带任何参数的 set 指令将显示当前 shell 中的全部变量,且总是返回 true,除非遇到非法的选项。


参数说明

可选参数及其说明如下:

参数 说明
-a 标示已修改的变量,以供输出至环境变量
-b 使被中止的后台程序立刻回报执行状态
-d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消
-e 若指令传回值不等于0,则立即退出shell
-f 取消使用通配符
-h 自动记录函数的所在位置
-k 指令所给的参数都会被视为此指令的环境变量
-l 记录for循环的变量名称
-m 使用监视模式
-n 测试模式,只读取指令,而不实际执行
-p 启动优先顺序模式
-P 启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接
-t 执行完随后的指令,即退出shell
-u 当执行时使用到未定义过的变量,则显示错误信息
-v 显示shell所读取的输入值
-H shell 可利用”!”加<指令编号>的方式来执行 history 中记录的指令
-x 执行指令后,会先显示该指令及所下的参数
+<参数> 取消某个set曾启动的参数。与-<参数>相反
-o option 特殊属性有很多,大部分与上面的可选参数功能相同,这里就不列了

重点参数

最常用的两个参数就是 -e 与 -x ,一般写在 shell 代码逻辑之前,这两个组合在一起用,可以在 debug 的时候替你节省许多时间 。

  • set -x 会在执行每一行 shell 脚本时,把执行的内容输出来。它可以让你看到当前执行的情况,里面涉及的变量也会被替换成实际的值。

  • set -e 会在执行出错时结束程序,就像其他语言中的“抛出异常”一样。(准确说,不是所有出错的时候都会结束程序,见下面的注)

    注:set -e结束程序的条件比较复杂,在man bash里面,足足用了一段话描述各种情景。大多数执行都会在出错时退出,除非 shell 命令位于以下情况:

    1. 一个 pipeline 的非结尾部分,比如error | ok
    2. 一个组合语句的非结尾部分,比如ok && error || other
    3. 一连串语句的非结尾部分,比如error; ok
    4. 位于判断语句内,包括test、if、while等等。

其他用法

  • set:初始化位置参数

    调用 set 是接一个或多个参数时,set 会把参数的值赋予位置参数,从 $1 开始赋值。如下例子:

     
    $ cat set-it.sh
    #!/bin/bash
    set first second third
    echo $3 $2 $1
    
    $ ./set-it.sh
    third second first
  • 如上,在执行 set-it.sh 脚本时并没有输入参数,但是使用 set 指令后会对位置参数进行赋值。

  • set:显示 shell 变量

    如果不带任何参数的使用 set

    命令,set 指令就会显示一列已设置的 shell 变量,包括用户定义的变量和关键字变量。

    $ set 
    BASH_VERSION='4.2.24(1)-release'
    COLORS=/etc/DIR_COLORS
    MAIL=/var/spool/mail/username
    ...
 

标签:shell,变量,用法,set,参数,指令,执行
From: https://www.cnblogs.com/ylxtiankong/p/18435026

相关文章

  • 易优CMS致命错误,联系技术支持:Call to undefined function eyPreventShell()-eyoucms
    当你遇到 core/helper.php 第146行左右出现致命错误,并且提示 CalltoundefinedfunctioneyPreventShell() 时,通常是因为某个自定义函数未被定义或未被正确引入。以下是一些具体的解决步骤:步骤1:检查函数定义定位 eyPreventShell 函数查找 eyPreventShell 函数的......
  • 易优CMS为何我安装完提示这个报错?:Array and string offset access syntax with curly
    当你遇到类似 Arrayandstringoffsetaccesssyntaxwithcurlybracesisdeprecated 的报错时,通常是因为当前使用的PHP版本较高,而程序代码中使用了一些已弃用的语法。原因分析PHP版本过高:当前使用的PHP版本(如PHP7.4或更高版本)不再支持某些旧的语法形式。代码使......
  • 前端使用webpack本地实现编译时出现错误[cached] 1 asset ERROR in main Module not
    一:概述Webpack是一个现代JavaScript应用程序的静态模块打包工具。它主要用于将JavaScript代码、CSS、图片等资源模块化管理,并最终打包成一个或多个文件,方便在浏览器中使用。以下是对Webpack的详细介绍:主要特点模块化:Webpack支持ES6模块、CommonJS和AMD模块,能够将各种......
  • 枚举类型的基本用法(动手动脑)
    仔细阅读示例:EnumTest.java,运行它,分析运行结果?代码如下:`publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getCl......
  • Setup Factory API
     SetupFactory中可以通过其API控制很复杂的业务需求。下图中展示了其内置的API种类与具体分类函数。      序号API名称API说明1Application.Exit退出安装程序,并返回一个可选的返回代码2Application.GetInstallLanguage返回一个包含当前......
  • 设置Setup Factory在安装之前或之后执行的操作
     设置SetupFactory在安装之前或之后执行的操作2013年09月26日09:58:08 northeastsqure 阅读数:2762http://63542424.blog.163.com/blog/static/18883900201191274557280/2011-10-1220:44:30|  分类: SetupFactory打|字号 订阅打包工具---setupfactory7使用 1......
  • export PATH="/opt/homebrew/bin:$PATH" 或者eval "$(/opt/homebrew/bin/brew shellen
    这两种方式都是为了将Homebrew的路径添加到系统的环境变量PATH中,使得可以在终端中使用Homebrew命令,但它们的实现方式和作用略有不同。exportPATH="/opt/homebrew/bin:$PATH":这种方式是直接将Homebrew的安装路径(/opt/homebrew/bin)添加到当前shell会话的PATH变量......
  • 题解:CF437B The Child and Set
    CF437BTheChildandSet题解这题目就一个问题。啥是\(\operatorname{lowbit}\)?\(\operatorname{lowbit}(x)\)是指\(x\)的二进制表示中最低位的\(1\)所表示的值。例如\((14)_{10}=(1110)_2\),其中最低位的\(1\)在第二位,表示\((2)_{10}\),即\(\operatorname{lo......
  • CShell.dll错误怎么办?CShell.dll文件错误解析:从根源到解决方案的全面指导
    一、CShell.dll文件概述CShell.dll是电脑系统中的一个动态链接库文件(DynamicLinkLibrary,DLL),它包含了程序运行所需的代码和数据。当系统或某个软件需要调用这些代码时,就会加载CShell.dll文件。然而,有时由于各种原因,CShell.dll文件可能会出现错误,导致程序无法正常运行。二......
  • Unity DatePicker用法,实现UI的日期/时间选择器功能
    前言用Unity3d做一个类似于选时间段,查询数据并展示统计UI的功能插件https://assetstore.unity.com/packages/tools/gui/datepicker-for-unityui-68264样例效果弹出日期选择器时间范围选择器包含类型SharedCalendar共享的日历,这个就是几个选择器共用一个日历来选择时间......