「速通Shell」建楼先搬砖,Shell变量四大分类

这篇具有很好参考价值的文章主要介绍了「速通Shell」建楼先搬砖,Shell变量四大分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇我们讲述了Shell的基本概念和运行方式,对Shell有了整体了解。如果说Shell是一栋大厦,那么变量便是一块块砖,是基础元素。Shell变量比可编译语言的变量更为复杂,种类更多,灵活性非常大,因此需要全面细致的把握。

Shell变量

什么是变量

变量是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。变量在几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。

从本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。 在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变。 由于变量的值是在计算机的内存中,所以当计算机被重新启动后,变量的值将会丢失。因此,对于需要长久保存的数据,应该写入到磁盘中,避免存储在变量中。

shell变量定义

shell变量是一种用来存放数据的编程元素,它可以帮助我们简化很多工作 。shell变量的值可以是数字、字符串、文件名、命令的输出等。shell变量可以在shell脚本中使用,也可以在命令行中使用,可以被赋值、修改、删除、导出等。

shell变量赋值是使用等号(=)将变量的名称和变量的值连接起来,例如:name=Tom。注意,等号两边不能有空格,否则会出错。shell变量的赋值可以在命令行中进行,也可以在shell脚本中进行。shell变量的赋值可以覆盖之前的赋值,例如:name=Tom; name=Jerry。

shell变量使用时在变量的名称前加上美元符号$,例如:echo $name。这样就可以打印出变量的值。shell变量的使用可以在命令行中进行,也可以在shell脚本中进行。shell变量的使用可以和其他命令或字符串组合,例如:echo “My name is $name”。

shell变量分类

Shell变量可以分为以下几种类型:

  • 环境变量(Environment Variable):环境变量是在Shell启动时由操作系统设置的,它们对于所有的Shell和Shell执行的程序都是可见的。一些常见的环境变量包括PATH、HOME、USER等。
  • 本地变量(Local Variable):本地变量是由Shell程序定义的,仅在当前Shell会话中可见,对于其他的Shell和Shell执行的程序是不可见的。本地变量可以通过=符号来定义和赋值,例如myvar=“hello”。
  • 位置参数变量(Positional Parameter Variable):位置参数变量是用来存储Shell脚本的命令行参数的,它们包括$1$2$3等。例如,如果我们运行一个Shell脚本并且传递了两个参数,那么这两个参数会被分别赋值给$1$2
  • 特殊变量(Special Variable):特殊变量是由Shell程序预定义的,用于存储一些特定的值或状态。例如,$? 用于存储上一个命令的返回值,$$用于存储当前Shell进程的PID,$IFS用于存储当前Shell的字段分隔符等。

环境变量

常见变量

在Linux Shell中,有许多预定义的环境变量。以下是一些常见的环境变量及其用途:

  • PATH:用于定义可执行文件的搜索路径。当我们输入一个命令时,Shell会在PATH变量指定的路径中搜索该命令的可执行文件。例如:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
  • HOME:用于定义当前用户的主目录路径。该变量通常用于Shell脚本中,以便访问用户的主目录下的文件和目录。例如:
$ echo $HOME
/home/myuser
  • USER:用于定义当前登录用户的用户名。该变量通常用于Shell脚本中,以便获取当前脚本的执行者。例如:
$ echo $USER
myuser
  • PS1:用于定义Shell提示符的格式。该变量通常用于自定义Shell提示符的外观和行为。例如:
$ export PS1="[\e[32m]\u@\h:[\e[34m]\w[\e[0m]\$ "

定义一个带有颜色的Shell提示符,其中u代表用户名,h代表主机名,w代表当前工作目录。

  • LANG:用于定义当前系统的默认语言。该变量通常用于控制程序的本地化和国际化。例如:
$ echo $LANG
en_US.UTF-8
  • PWD:当前工作目录。例如:
$ echo $PWD
/home/myuser

变量引用

在Shell脚本中,我们可以使用$符号来引用环境变量。例如:

#!/bin/bash
echo "My home directory is $HOME"
echo "My username is $USER"
echo "My PATH is $PATH"
echo "The value of MYVAR is $MYVAR"

执行后输出当前用户的主目录、用户名、PATH变量和MYVAR变量的值。

变量赋值

使用export命令可以将环境变量设置为全局变量,这样它们就可以在当前Shell会话中的所有进程中使用。例如:

$ export MYVAR="hello"

定义一个名为MYVAR的环境变量,并将其值设为hello。

同时,环境变量是可以重新赋值的,我们可以使用export命令将一个本地变量赋值给一个环境变量,或者直接在当前Shell会话中使用export命令重新赋值一个已经存在的环境变量。

例如,假设我们有一个名为MYVAR的环境变量,其当前值为hello。我们可以使用以下命令将一个本地变量myvar赋值给MYVAR环境变量:

$ myvar="world"
$ export MYVAR=$myvar

把本地变量myvar的值world赋值给环境变量MYVAR,此时MYVAR的值为world。

同样地,我们也可以直接在当前Shell会话中使用export命令重新赋值一个已经存在的环境变量:

$ export MYVAR="world"

重新将MYVAR的值设置为world。

需要注意的是,一旦我们重新赋值了一个环境变量,该变量的新值将在当前Shell会话中生效,同时也会影响到当前Shell会话中的所有子进程和后续的Shell会话。因此,如果我们需要在一个Shell会话中重新赋值一个环境变量,需要谨慎考虑其可能会对系统中其他程序的运行产生的影响。

本地变量

变量定义

本地变量可以使用=符号进行定义和赋值。例如:

$ myvar="hello"

定义一个名为myvar的本地变量,并将其值设为hello。我们可以使用echo命令来输出该变量的值:

$ echo $myvar
hello

本地变量只在当前Shell会话中可见,对于其他的Shell和Shell执行的程序是不可见的。

例如,如果我们在一个Shell会话中定义了一个本地变量:

$ myvar="hello"

那么在另一个Shell会话中,该变量是不存在的:

$ echo $myvar

变量引用

在Shell脚本中,我们可以使用$符号来引用本地变量。例如:

#!/bin/bash
myvar="hello"
echo "The value of myvar is $myvar"

输出The value of myvar is hello

变量赋值

本地变量可以被重新赋值,例如:

$ myvar="hello"
$ echo $myvar
hello
$ myvar="world"
$ echo $myvar
world
$ unset myvar
$ echo $myvar

定义一个名为myvar的本地变量,并将其值设为hello,然后将其重新赋值为world,最后使用unset命令删除该变量。

变量删除

shell变量的删除的方法是使用unset命令,例如:unset name,这样就可以删除变量的名称和变量的值。shell变量的删除可以在命令行中进行,也可以在shell脚本中进行,删除可以释放内存空间,避免变量名冲突。

unset命令语法:unset [选项] [name …]

选项 含义
-f 仅删除函数
-v 仅删除变量(不包括只读变量)
-n 删除具有引用属性的变量名(如果该选项存在)

如果不加选项参数,那么既可以删除变量,也可以删除函数。

需要注意的是,unset命令不能删除只读变量。

位置参数变量

变量定义

在Shell编程中,位置参数变量用于获取脚本或函数的输入参数。当我们执行一个Shell脚本或函数时,我们可以将参数传递给该脚本或函数,并在其中使用位置参数变量来获取这些参数的值。

常见位置参数变量:

  • $0:当前脚本或函数的名称。
  • $1$2$3、…:当前脚本或函数的第一个、第二个、第三个参数,以此类推。
  • $#:当前脚本或函数的参数个数。
  • $*:当前脚本或函数的所有参数,作为一个字符串。
  • $@:当前脚本或函数的所有参数,作为一个数组。

变量引用

下面是一个使用位置参数变量的示例脚本:

#!/bin/bash
echo "The name of this script is: $0"
echo "The first parameter is: $1"
echo "The second parameter is: $2"
echo "The third parameter is: $3"
echo "The total number of parameters is: $#"
echo "All the parameters are: $*"
echo "All the parameters are: $@"

当我们执行该脚本并传递三个参数时,输出将如下所示:

$ ./script.sh hello world 123
The name of this script is: ./script.sh
The first parameter is: hello
The second parameter is: world
The third parameter is: 123
The total number of parameters is: 3
All the parameters are: hello world 123
All the parameters are: hello world 123

我们可以看到,使用位置参数变量可以轻松地获取脚本或函数的输入参数,并对其进行处理和操作。位置参数变量适用于编写需要处理大量输入参数的脚本。

特殊变量

变量定义

在Shell编程中,有很多特殊变量可以用来获取各种系统信息和脚本信息,使用特殊变量能够简化代码复杂度,减少使用复杂代码来完成固定任务的情况,提升运行效率。

常见的特殊变量:

  • $$:当前脚本或进程的进程ID。
  • $?:上一个命令或脚本的退出状态码。
  • $!:上一个后台进程的进程ID。
  • $USER:当前用户的用户名。
  • $HOME:当前用户的主目录路径。
  • $PATH:当前系统的执行路径。
  • $PWD:当前工作目录路径。
  • $SHELL:当前使用的Shell程序路径。
  • $RANDOM:一个0到32767之间的随机数。
  • $LINENO:当前脚本的行号。
  • $IFS:当前脚本的字段分隔符。
  • $PS1:Shell提示符的格式。
  • $PS2:Shell续行提示符的格式。

变量引用

下面是一个使用特殊变量的示例脚本:

#!/bin/bash
​
echo "The process ID of this script is: $$"
echo "The exit status of the last command is: $?"
echo "The process ID of the last background job is: $!"
echo "The current user is: $USER"
echo "The home directory of the current user is: $HOME"
echo "The current PATH is: $PATH"
echo "The current working directory is: $PWD"
echo "The current shell is: $SHELL"
echo "A random number between 0 and 32767: $RANDOM"
echo "The current line number is: $LINENO"
echo "The current field separator is: $IFS"

当我们执行该脚本时,输出将如下所示:

The process ID of this script is: 1234
The exit status of the last command is: 0
The process ID of the last background job is: 
The current user is: username
The home directory of the current user is: /home/username
The current PATH is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
The current working directory is: /home/username
The current shell is: /bin/bash
A random number between 0 and 32767: 2373
The current line number is: 7
The current field separator is:  

通过示例可以看到,使用特殊变量可以轻松地获取各种系统信息,并在脚本中使用它们来进行处理和操作。在实际编程中,特殊变量能够有效简化代码,提高执行效率,特别是在需要获取系统信息或处理系统事件的脚本中。

总结

Shell变量分为环境变量、本地变量、位置参数变量和特殊变量,实际使用中,四者有一定的重叠性。Shell变量是用好Shell编程的基础,灵活恰当的使用变量可以简化脚本复杂度,提高脚本运行效率和可读性。

我是柒号华仔,如果这篇文章对您有帮助,欢迎点赞、评论、收藏。下一篇我们将进入shell变量的具体使用方法。文章来源地址https://www.toymoban.com/news/detail-469551.html

到了这里,关于「速通Shell」建楼先搬砖,Shell变量四大分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM学习 GC垃圾回收机制 (堆内存结构、GC分类、四大垃圾回收算法)

    🤖 作者简介: 努力的clz ,一个努力编程的菜鸟 🐣🐤🐥   👀 文章专栏: 《JVM 学习笔记》 ,本专栏会专门记录博主在学习 JVM 中学习的知识点,以及遇到的问题。   🙉 文章详情: 本篇博客是学习 【狂神说Java】JVM快速入门篇 的学习笔记,关于 GC垃圾回收机制 (堆内存结

    2023年04月19日
    浏览(44)
  • Shell编程基础(三)环境变量 & 位置变量 & 系统内置变量

    在脚本种直接定义的变量,只能在当前shell进程中使用 若想要在其他shell进程中使用,可以将变量声明为 环境变量 export 变量名 :用于导出已有变量到环境变量 export 变量名=变量值:直接声明一个新的变量为环境变量 注意:命令行 执行 export 声明的环境变量,只在当前shell

    2024年02月15日
    浏览(40)
  • Linux:Shell脚本和Shell变量的入门指南

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z05Ey0Tt-1687331750572)(https://example.com/linux-shell-image.png)] Shell脚本是一种用于自动化任务和批处理的脚本语言,主要用于Unix和Linux系统。它提供了一种简单而强大的方式来执行系统命令、处理文件、控制流

    2024年02月10日
    浏览(48)
  • SHELL——环境变量

    SHELL环境变量分类: 作用域分类为全局变量和局部变量、 系统变量和用户自定义变量。 打印系统全局变量命令:env、printenv 打印系统局部变量命令:set 在编辑器中查看系统全局变量命令:env | less 在编辑器中查看系统局部变量命令:set | less (全局变量可以在子shell中查看、

    2024年02月08日
    浏览(30)
  • Shell脚本——变量

    目录 一.Shell脚本的变量基本介绍 1.Shell脚本的变量是什么? 2.变量的作用 3.变量作用范围 4.删除变量 二.变量的类型 1.自定义变量 1.1 命名要求 1.2 定义新的变量 1.3 查看定义的变量的值 1.4 赋值时使用符号 1.5 从键盘输入内容为变量赋值 2.环境变量 3.只读变量 4.位置变量 5.预定

    2024年02月07日
    浏览(41)
  • Shell——变量和引用

    1.总结变量的类型及含义? 2.实现课堂案例计算长方形面积?(6种方式) 3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815 (通过多种方法实现)         1)截取网站访问的协议         2)截取网站访问账号信息 1.总结变量的类型及含义?    自定义变

    2024年02月06日
    浏览(42)
  • Shell 变量

    定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name=\\\"runoob.com\\\" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

    2024年02月13日
    浏览(30)
  • Shell脚本的变量

    目录 shell脚本变量: 1.变量的介绍: 2.变量的作用: 3.变量的类型 : 4.自定义变量 : (1)自定义变量命名要求: (2)定义与查看变量: (3)赋值时使用的引号 : ​编辑(4)从键盘输入内容为变量赋值: (5) 变量的运算 : (6)浮点数运算 : 5.环境变量: 1.环境变

    2024年01月24日
    浏览(33)
  • Shell Script—变量

    Shell脚本中的变量是一段文本,代表了一个值或对象。在Shell脚本中,通常使用变量来存储命令行参数、计算中间值、存储文件名,存储用户输入等信息,可以根据需要使用、修改或打印出来。 在Shell脚本中,可以通过以下方式定义变量: 直接赋值:使用等号(=)赋值。 加花

    2024年02月11日
    浏览(30)
  • shell中的变量

    1)常用系统变量 H O M E 、 HOME、 H OME 、 PWD、 S H E L L 、

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包