掘金 后端 ( ) • 2024-06-16 14:52
————前言————

变量是编程中的基本概念,也是Shell脚本中不可或缺的组成部分。**通过使用变量,你可以存储和操作数据,从而编写更灵活和动态的脚本。**无论是简单的字符串、数字,还是复杂的数据结构,变量都能帮助你更有效地管理信息。在本篇指南中,我们将详细讲解Shell中的变量类型、定义方法、使用技巧以及常见的变量操作,帮助你熟练掌握变量的使用,让你的Shell脚本更加高效和强大。让我们一同深入学习Shell中的变量世界吧!

各种 Shell 环境中都使用到了“变量”的概念。Shel 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,Shel程序能够提供更加灵活的功能,适应性更强。 常见 She!l 变量的类型包括自定义变量、环境变量、位置变量、预定义变量。

1 自定义变量

自定义变量是由系统用户自己定义的变量,只在用户自己的Shel环境中有效,因此又称为本地变量。在编写 Shel 脚本程序时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需要。

🫠1.定义新的变量

Bash 中的变量操作相对比较简单,不像其他高级编程语言(如 C/C++、Java 等)那么复杂在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋给初始值(内容即可。

定义变量的基本格式为“变量名=变量值”,等号两边没有空格。变量名称需以字母或下划线开头,名称中不要包含特殊字符(如+、-、*、/、、?.%、&、#等)。例如,若要定义一个名为name的变量(值为 Python)和一个名为“Version”的变量(值为 2.7.13),可以执行以下操作。

[root@localhost ~] name=python[root@localhost ~] version=2.7.13
🏖️2.查看和引用变量的值

通过在变量名称前添加前导符号“S”,可以引用一个变量的值。使用 echo 命令可以查看变量可以在一条 echo 命令中同时查看多个变量值,

[root@localhost ~] echo $namepython[root@localhost ~] echo $version2.7.13

image.png

当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号“(}”将其括起来,否则将无法确定正确的变量名称。对于未定义的变量,将显示为空值。

[root@localhost ~] echo $name666[root@localhost ~] echo ${name}666python666

image.png

🗻3.变量赋值的特殊操作

在等号“=”后边直接指定变量内容是为[变量赋值]的最基本方法,除此之外,还有一些特殊的赋值操作,可以更灵活地为变量赋值,以便适用于各种复杂的管理任务。

1.双引号(" ")

双引号主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须以双引号括起来其他情况下双引号通常可以省略。

[root@localhost ~] name=python 2.56//错误的-bash: 2.56: 未找到命令
[root@localhost ~] name="python 2.56"//正确的[root@localhost ~] echo $namepython 2.56

image.png 在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用),从而能够直接调用现有变量的值来赋给新的变量。例如,执行以下操作可以调用变量Version 的值,将其赋给一个新的变量java,最终的值为“java7.7"。

在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用),从而能够直接调用现有变量的值来赋给新的变量。例如,执行以下操作可以调用变量Version 的值,将其赋给一个新的变量java,最终的值为“java7.7"。

image.png

2.单引号(' ')

当要赋值的内容中包含$、\等具有特殊含义的字符时,应使用单引号括起来。在单引号的范围内,将无法引用其他变量的值,任何字符均作为普通字符看待。但赋值内容中包含单引号()时需使用\”符号进行转义,以免冲突。

[root@localhost ~] Version=7.7
[root@localhost ~] java='java $Version'
[root@localhost ~] echo $javajava $Version

image.png

3.反撇号(``)

**反撒号主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。**反撇号括起来的范围内必须是能够执行的命令行,否则将会出错。例如,若要在一行命令中查找useradd 命令程序的位置并列出其详细属性,可以执行以下操作。

[root@localhost ~] grep=`grep "root" /etc/passwd `
[root@localhost ~] echo $greproot:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

image.png

🧱4.read 命令

Shell 中的 read 命令 用于从标准输入读取数据并将其存储在变量中。它是一种在 shell 脚本和交互式 shell 中获取用户输入的常用方法。

基本用法

read [选项] 变量名
  • 变量名 是要将读取到的数据存储到的变量。
  • 选项用于指定 read 命令的行为。

常见选项

  • -p 提示符:在读取输入之前显示提示符。
  • -n N:读取 N 个字符后结束。
  • -t 秒数:等待输入的超时时间(以秒为单位)。
  • -s:隐藏输入内容。
[root@localhost ~] read hi你好
[root@localhost ~] echo $hi你好

**为了使交互式操作的界面更加友好,提高易用性,read 命令可以结合“-p”选项来设置提示信息,**以便告知用户应该输入什么内容等相关事项。例如,若希望提示用户输入备份文件的存放目录并将输入的路径信息赋值给变量 dir 可以执行以下操作。

[root@localhost ~] read -p "请输入你想要放置的目录:" dir请输入你想要放置的目录:/root
[root@localhost ~] echo $dir/root

image.png