「速通Shell」嵌点入线,Shell变量引用详解

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

上一篇我们了解了Shell变量的定义和分类,对不同变量类型的特点和作用有了初步认识,今天我们将讲述Shell编程中变量该如何引用,将其融入到shell语句中,并进行相关操作。

常规引用

Shell变量引用是指在Shell脚本中,使用变量名来获取该变量存储的值的过程。在Shell脚本中,使用变量引用的方法非常简单,只需要在变量名前加上"$"符号即可。例如,定义一个变量name,可以使用$name来引用该变量,在其他编程语言中,引用变量就是直接使用变量名name,这点是shell的特殊所在。

虽然变量引用非常简单,但在进行变量引用时,我们还是需要注意以下几点:

  • 变量名前必须加上"$"符号,否则Shell会将变量名视为普通字符串。
  • 在变量名和"$"符号之间不要有空格,否则Shell也会将变量名视为普通字符串。
  • 如果要在字符串中使用变量引用,需要使用双引号。例如,echo “My name is $name”,这一点我们在部分引用中再加以描述。

以下是一个简单的Shell脚本,可以对变量引用有个较为清晰的印象:

#!/bin/bash

name="Tom"
age=25

echo "My name is $name and I am $age years old."

执行该脚本后,输出结果为:

My name is Tom and I am 25 years old.

在这个例子中,我们可以看到shell变量是不需要指定数据类型的,而是与赋值相关,赋值整数表示等同于int类型,赋值字符串便等同于string类型。

在shell中,变量的引用符号主要包含四种:

引用符号 说明
" " 双引号 屏蔽除美元符号$、反引号( ` )和反斜线( \ )之外的所有字符
’ ’ 单引号 屏蔽所有的字符
`` 反引号 shell将反引号中的内容解释为系统命令
\ 反斜线 转义符,屏蔽下一个字符的特殊含义

变量操作

使用$符号是对变量的常规应用,在实际shell编程中,我们需要对变量进行一些特殊操作,这些操作我们只需要借助于特殊操作符号来进行,不用编写复杂的操作函数。

特殊操作

变量可以使用${}符号进行操作,该符号用于引用变量的值,并可以对变量的值进行一些操作,例如获取字符串的长度、截取字符串等。

  • ${var}

这种方式与 $var 类似,将变量的值插入到命令行中。不同之处在于,使用 ${} 语法可以在变量名后面添加其他字符,例如:

name="Tom"
echo ${name}_Doe

输出 “Tom_Doe”。

  • ${var-default}

在变量不存在或为空时,使用默认值替换变量。

echo ${occupation:-"unemployed"}

如果变量 occupation 不存在或为空,将输出 “unemployed”。

  • ${var:=default}

这种方式与 ${var-default} 类似,不同之处在于,如果变量不存在或为空,将使用默认值替换变量,并将默认值赋值给变量。

echo ${age:=18}
echo $age

如果变量 age 不存在或为空,将输出 “18” 并将其赋值给变量 age。

  • ${var:?message}

在变量不存在或为空时,输出一条错误信息。

echo ${city:?"variable city is not set"}

如果变量 city 不存在或为空,将输出 “variable city is not set”。

  • ${var:offset:length}

从变量的指定位置开始截取指定长度的子字符串。

str="Hello, World!"
echo ${str:7:5}   # 输出:World

我们从字符串变量 str 的第 7 个字符开始,截取 5 个字符的子字符串。

  • ${#var}

获取字符串的长度。

string="Hello, world!"
echo ${#string}      # 输出:13,获取字符串的长度

字符串"Hello, world!"长度为13。

运算操作

整数变量运算使用$(())符号进行,可以进行算术运算。需要注意的是,(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。我们可以使用$获取 (( )) 命令的结果,这和使用$获得变量值是类似的。

x=5
y=3
echo $(($x + $y))   # 输出:8

全引用与部分引用

上面的引用都是对变量本身的引用,如果将其放入字符串中,将形成对整个字符串的引用。$变量名 放入不同引号包含的字符串中,其含义并不一样。

如果将一个字符串使用单引号引用,字符串的所有字符(包括空格,$等)都被解释为字符本身,我们称之为全引用。

echo 'Hello, World!'

这个命令输出 “Hello, World!”,在这个例子中,字符串中的逗号和空格被视为普通字符,而不是分隔符。

如果将一个字符串使用双引号引用,其中所包含的字符除美元符号($)、反引号(`),以及反斜线(\)之外的所有其他的字符,都将被解释为字面意义,这称为部分引用。也就是说,在部分引用中,这三种字符仍然拥有特殊的涵义。例如,$符号仍然可以用来引用变量的值。

name="Tom"
echo "My name is $name."

这个命令输出 “My name is Tom.”,在这个例子中,$name 被解析为变量 name 的值 “Tom”。

命令替换

命令替换是一种将命令的输出作为参数传递给另一个命令或变量的方法。命令替换有两种形式:反引号和 $()。反引号(`)或$() 用于将命令的输出作为参数传递给另一个命令或变量,其语法为:

command `subcommand`
command $(subcommand)

在这个语法中,subcommand 是一个要执行的命令,并将其输出作为参数传递给 command。

echo "Today is `date`."
echo "Today is $(date)."

命令输出 :

Today is Thu Apr  6 07:16:46 PDT 2023.
Today is Thu Apr  6 07:16:46 PDT 2023.

在上述例子中,date 命令的输出被传递给 echo 命令,并作为字符串 “Today is Thu Apr 6 07:16:46 PDT 2023.” 的一部分输出。

变量转义

在 Shell 编程中,某些情况下,需要将某些特殊字符转义,以保证字符串的正确性,变量转义是一种常见的操作。转义使用反斜线表示,当反斜线后面的一个字符具有特殊的意义时,反斜线将屏蔽该字符的特殊意义,使得Shell按照该字符的字面意义来解释。

$符号

如果需要在字符串中插入 $ 符号,可以使用转义字符 \。

name="Tom"
echo "My first name is $name."
echo "My second name is $name."

执行后输出 :

My first name is Tom.
My second name is $name.

在这个例子中,第一行$name 被解析为变量 name 的值 “Tom”,第二行$ 被解析为字符 $,而不是变量。

空格

在 Shell 中,空格被用作命令行参数的分隔符。如果需要在字符串中使用空格,可以使用双引号或单引号将字符串括起来。

echo "My favorite food is pizza."
echo 'My favorite food is pizza.'

这两个命令都将输出 “My favorite food is pizza.”。

引号

双引号或单引号用于将字符串括起来,如果需要字符串中再使用双引号或单引号,可以使用转义字符 \"或\'。

echo "He said, "Hello!""
echo 'He said, '''Hello!''''

执行后输出:

He said, "Hello!"
He said, 'Hello!'

反斜杠

通过上面讲解我们知道,在 Shell 中,反斜杠用于转义字符,那么如果需要在字符串中使用反斜杠,我们可以使用两个反斜杠 \\ 来进行转义。例如:

echo "C:\Windows\System32"

这个命令将输出 “C:\Windows\System32”。

总结

通过本篇文章,我们了解了变量的引用方法和操作方法,熟悉了全引用、部分引用、替换和转义四种变量引用场景。在编程中,需要根据实际情况进行合理选择,以确保脚本的简洁和准确。

我是柒号华仔,如果这篇文章对您有帮助,欢迎点赞、评论、收藏。下一篇我们将进入shell条件测试和判断。文章来源地址https://www.toymoban.com/news/detail-438081.html

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

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

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

相关文章

  • 「速通Shell」初次走近Shell,Shell是什么?

    对于开发者来说,除了掌握Java、C/C++等主要编程语言外,还需要掌握支撑性的工具语言和库,学习和掌握Shell,能够帮助我们高效便捷的编译和运行程序,让系统代替复杂的人工操作。通过速通Shell系列,我们一起走近Shell,读懂Shell,用好Shell,提高程序执行效率和日常工作效

    2024年02月03日
    浏览(26)
  • 【C语言】-- 一篇带你了解指针,内存,解引用

    目录 1、什么是指针? 1.1 内存 1.2 指针变量 二、指针和指针类型 1、指针类型 2、指针+整数 3、指针的解引用 三、野指针 1、野指针成因 (1) 指针未初始化 (2) 指针越界访问 (3) 指针指向的空间释放 2、如何规避野指针 四、指针运算 1、指针-指针        本篇文章我们来了解C语

    2024年02月16日
    浏览(47)
  • 【C++系列P2】引用——背刺指针的神秘刺客(精讲一篇过!)

    前言 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎! 如标题所示,本章主要内容主要来侃侃“ 引用 ”这个刺客!如下就是大纲啦~ 引用,即 取别名 。它的最大特点是编译器 不会为引用变量而开辟空间 ,他们 共用同一块 空间。   1. 引用使用时必须要 初始化 。 2. 引用在初

    2024年02月10日
    浏览(61)
  • 第二章 变量和引用

    目录 2.1. 深入认识变量 2.1.1. 什么是变量 2.1.2. 变量的名称 2.1.3. 变量的类型 2.1.4. 变量的定义 2.1.5. 自定义变量 2.1.6. 环境变量 2.1.7. 位置变量 2.2. 变量赋值和作用域 2.2.1. 显示赋值:变量名=变量值 2.2.2. read 从键盘读入变量值 2.2.3. 变量和引号 2.2.4. 变量的作用域 变量是在程序

    2024年02月20日
    浏览(37)
  • 7. Java 引用变量的比较

    在Java中,当你使用双引号直接创建字符串时,如:String s = “LXHYouth”;String s2 = “LXHYouth”;使用 == 运算符比较这两个引用时,结果为 true 然而,当你使用 new 创建字符串对象时,情况就有所不同了: String s3 = new String(“LXHYouth”); // 使用 new ,s3 指向堆中的一个新

    2024年04月10日
    浏览(29)
  • 【Linux】1 一篇通俗的Shell体验教程

    计算机不仅仅用来开发个网站或软件,更是我们手中的利器,我们的tools。 shell 是我们与计算机交互的主要方式,可视化的图形界面其实很受限,你只能通过预设的按钮去做一些事情。 2.1 程序 操作系统中通常都有一个”shell“,例如windows中的powershell。它们之间可能有些区别

    2024年02月02日
    浏览(22)
  • C++的引用变量作为函数参数

    在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。 引用传递: 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。 通过引用变量用作参数,函数将使用原始数据,而不是其副本。 举

    2023年04月14日
    浏览(27)
  • C++中的引用及指针变量

    目录 1.1 C++中的引用 1.2 C++中的指针变量(pointer) 1.1 C++中的引用 C++中的引用(reference)是一种特殊的变量,它是某个已存在变量的另一个名字。引用变量与指针变量类似,但引用变量必须在声明时进行初始化,并且一旦引用变量与某个变量关联起来,就无法再与其他变量关

    2024年01月20日
    浏览(34)
  • Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

    写本章前想起题主初学Labview时面对一个位移台程序,傻傻搞不清局部变量和属性节点值有什么区别,概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念,看完记得点赞加关注喔~ 本文程序源代码附在后面,大家可以自行下载学习。 本文的结构还是首先教

    2024年01月20日
    浏览(29)
  • Linux学习之变量引用和作用范围

    使用 ${变量名} 或者 $变量名 就可以引用变量, $变量名 其实是 ${变量名} 的省略写法。 要是变量名后边还有其他字符就需要加上 {} ,比如 helloToBash 这个变量的值是 Hello Bash ,而需要输出的字符串是“Hello Bashing”,这样就需要加上 {} ,演示如下: echo $helloToBashing 输出为空,

    2024年02月15日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包