写点什么

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

作者:左诗右码
  • 2024-06-19
    上海
  • 本文字数:1175 字

    阅读完需:约 4 分钟

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

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


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

变量的基本规则

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

变量命名规范

  1. 变量名可由数字、字母、下划线构成;

  2. 必须以字母或下划线开头;

  3. 不能使用 Shell 中的关键字(可通过 help 命令查看保留关键字列表)。

特殊变量一览

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


如何定义变量

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

单引号包围

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


#!/bin/bash
word='Hello $USER'echo $word # 输出 Hello $USER 字符串本身
复制代码

双引号包围

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


#!/bin/bash
word="Hello $USER"echo $word # 输出 Hello 后跟当前用户名
复制代码

不加引号

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


#!/bin/bash
variable=valueecho ${variable} # 输出 value
复制代码

使用变量

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


#!/bin/bash
name="alex"echo "My name is ${name}." # 输出 My name is alex.
复制代码

修改变量的值

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


#!/bin/bash
name="alex"echo ${name} # 输出 alexname="harry"echo ${name} # 输出 harry
复制代码

将命令的输出赋值给变量

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


#!/bin/bash
path=$(pwd)echo ${path} # 输出当前目录路径
复制代码


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



#!/bin/bashbegin_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 namename="ben" # 尝试执行将引发错误
复制代码

删除变量

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


#!/bin/bash
path=$(pwd)unset pathecho ${path} # 此时没有任何输出
复制代码


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


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

发布于: 刚刚阅读数: 5
用户头像

左诗右码

关注

全网同名,欢迎关注交流。 2018-11-22 加入

三观比五官更正,思想比套路更深。常用技术栈PHP、Go、Python,享受编程,平时爱好写点文章。V公主号:「左诗右码」,欢迎关注交流。

评论

发布
暂无评论
Shell 变量详解:如何定义、使用和管理_Shell_左诗右码_InfoQ写作社区