美文网首页
Shell 变量详解:如何定义、使用和管理

Shell 变量详解:如何定义、使用和管理

作者: 左诗右码 | 来源:发表于2024-06-18 22:33 被阅读0次

在编写 Shell 脚本时,变量扮演着极为重要的角色。它们使我们能够临时保存数据,以便在脚本的其他部分中使用。

本文将通过简单的语言和清晰的示例,帮助你掌握 Shell 变量的基础知诀,无论你是初学者还是具备一定编程经验的开发者,都能从中获益。

变量的基本规则

在 Bash Shell 中,变量的值默认为字符串类型,且在进行变量赋值时,等号=两侧不能有空格。

变量命名规范

  1. 变量名可由数字、字母、下划线构成;
  2. 必须以字母或下划线开头;
  3. 不能使用 Shell 中的关键字(可通过 help 命令查看保留关键字列表)。

特殊变量一览

下面的表格简要介绍了几个常用的特殊变量及其含义:

变量 含义
$0 当前脚本的文件名
$n 脚本或函数的第 n 个参数。注意:当 n≥10 时,应使用 ${n} 的格式
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数(作为一个整体)
$@ 传递给脚本或函数的所有参数(作为独立的多个值)
$? 上一个命令的退出状态或函数的返回值
$$ 当前 Shell 进程的 PID
$! 后台运行的最后一个进程的 PID

如何定义变量

定义变量的方式主要有三种:不加引号、单引号和双引号。选择哪种方式取决于你希望如何处理其中的特殊字符和变量。

单引号包围

单引号内的内容将完全按字面意义处理,不解析变量或执行命令。

#!/bin/bash

word='Hello $USER'
echo $word  # 输出 Hello $USER 字符串本身

双引号包围

双引号内的内容可以解析变量,执行命令。

#!/bin/bash

word="Hello $USER"
echo $word  # 输出 Hello 后跟当前用户名

不加引号

不加引号时,如果值中包含空格,需要特别注意,因为 Shell 会将空格后的内容视为另一个命令或参数。

#!/bin/bash

variable=value
echo ${variable}  # 输出 value

使用变量

在使用变量时,强烈推荐将变量名包围在花括号{}中。这不仅是一个良好的编程习惯,而且有助于明确变量的边界。

#!/bin/bash

name="alex"
echo "My name is ${name}."  # 输出 My name is alex.

修改变量的值

变量一旦定义后,我们可以按需更改其值。

#!/bin/bash

name="alex"
echo ${name}  # 输出 alex
name="harry"
echo ${name}  # 输出 harry

将命令的输出赋值给变量

可以通过反引号`$() 将命令的输出结果赋值给变量,$() 方式具有可嵌套的特性且可读性更强。

#!/bin/bash

path=$(pwd)
echo ${path}  # 输出当前目录路径

示例:计算脚本的运行时间


#!/bin/bash
begin_time=`date +%s`    #开始时间,使用``替换
sleep 20s                #休眠20秒
finish_time=$(date +%s)  #结束时间,使用$()替换
run_time=$((finish_time - begin_time))  #时间差
echo "begin time: $begin_time"
echo "finish time: $finish_time"
echo "run time: ${run_time}s"

只读变量

使用 readonly 命令可以将变量设置为只读,尝试更改这些变量的值将导致错误。

#!/bin/bash

name="alex"
readonly name
name="ben"  # 尝试执行将引发错误

删除变量

使用 unset 命令可以删除变量。但需要注意的是,这个命令不能删除只读变量。

#!/bin/bash

path=$(pwd)
unset path
echo ${path}  # 此时没有任何输出

至此,我们对 Shell 变量的定义、使用和管理方法有了基本的了解。通过这篇文章,你应该能够在你的脚本中更灵活地使用变量来存储和修改数据了。

记得实践是学习的最佳方式,所以不妨动手尝试一下吧!

相关文章

  • shell-1.变量使用方法

    shell有两类变量,临时变量和永久变量。 临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对...

  • 第五节 变量类型和使用

    一.Shell变量的种类 用户自定义变量:由用户自己定义、修改和使用 预定义变量:Bash预定义的特殊变量,不能直...

  • shell语法

    一,变量的定义到使用(编译原理和语法详解) 说白了,shell就是一串命令的集合,可以帮助我们完成很多事情。广泛存...

  • Shell变量:Shell变量的定义、使用和删除

    变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值...

  • shell变量详解

    本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...

  • Shell常见基础问题

    1 如何执行一个未设置x权限的Shell脚本? 2 自定义Shell变量时,变量名有什么规则? 3 简述预定义变量...

  • shell 脚本

    shell 脚本的使用 1、变量 定义的时候 直接用 name=value 使用变量的使用 用${name} 2、...

  • Shell常用命令(md格式方便阅读和复制粘贴)

    Shell Shell中的变量 系统变量 自定义变量 自定义变量规则 Shell特殊变量 运算符 条件判断 基本语...

  • Linux shell

    变量、变量类型 shell的数据类型主要有字符串,整数,数组,至于浮点数很少使用。变量的定义和使用如下: 并且整数...

  • Linux_Shell脚本编程之Shell变量

    Shell变量介绍 1、Linux Shell中的变量为 , 系统变量 和 用户自定义变量2、系统变量:PWD、U...

网友评论

      本文标题:Shell 变量详解:如何定义、使用和管理

      本文链接:https://www.haomeiwen.com/subject/aapgqjtx.html