目录
- 前言
- 一、Shell变量——变量类型
- 1、用户自定义变量
- 2、环境变量
- 用./ 启动脚本文件记得加权限哦
- 二、Shell变量——变量赋值和访问
- (一)变量定义
- (二)变量的使用
- (三)删除变量
- (四)添加环境变量
- (五)内部变量
- (六)变量值输出
- (七)变量值读取
- (八)变量替换
- 总结
前言
在现代计算中,Shell脚本作为一种强大的自动化工具,广泛应用于系统管理、数据处理及各种开发任务。理解Shell变量的使用和管理是编写高效脚本的基础。通过掌握用户自定义变量、环境变量及其赋值、访问和删除等操作,用户能够更灵活地控制脚本的执行流程,从而提高工作效率。本教程旨在深入探讨Shell变量的各个方面,为用户提供实用的操作示例和深入的理解。
一、Shell变量——变量类型
1、用户自定义变量
在编写Shell脚本时定义,可以在Shell程序内任意使用和修改。可以将它看作局部变量,仅在当前Shell实例中有效。
①创建一个脚本文件
vim zh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
name="John Doe"
age=30
echo "Hello, my name is $name and I am $age years old."
age=31
echo "Now I am $age years old."
如图:
③启动zh.sh 脚本文件
sh zh.sh
2、环境变量
在 Shell 脚本中,环境变量是系统为进程和程序提供的一种方式。环境变量通常是全局的,在整个系统中都可以访问,可以直接在 Shell 程序中使用这些环境变量,也可以在运行时对它们进行修改。
①创建一个脚本文件
vim zhh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
echo "脚本开始时的目录是:$(pwd)"
echo "当前用户的主目录是:$HOME"
cd $HOME
echo "当前目录是:$(pwd)"
echo "当前登录的用户名是:$USER"
echo "脚本结束时的目录是:$(pwd)"
③启动zhh.sh 脚本文件
bash zhh.sh
或 ./zhh.sh
用./ 启动脚本文件记得加权限哦
chmod +x ./zhh.sh
二、Shell变量——变量赋值和访问
(一)变量定义
-
变量无须事先声明,给变量赋值也就是定义一个变量的过程
变量名=值
注意 = 两边没有空格 -
变量名的命名应当遵循如下规则:
-
首个字符必须为字母或下划线:
name, _name
是合法的,1name
是不合法的。 -
中间不能有空格:
full_name
是合法的,full name
是不合法的。 -
不能使用标点符号:
user_name
是合法的,user-name
是不合法的。 -
不能使用 Shell 关键字:
if
,for
,while
是Shell
的关键字,不能作为变量名。
(二)变量的使用
①创建一个脚本文件
vim zhhh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
username="Alice"
user_age=30
echo "用户名:$username"
echo "年龄:$user_age"
username="Bob"
user_age=35
echo "新的用户名:$username"
ho "新的年龄:$user_age"
③启动zhhh.sh 脚本文件
bash zhh.sh
或 ./zhhh.sh
(三)删除变量
①打开脚本文件
vim zhh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
username="Alice"
user_age=30
echo "用户名:$username"
echo "年龄:$user_age"
unset username
unset user_age
echo "用户名:$username"
echo "年龄:$user_age"
③启动zhhh.sh 脚本文件
bash zhhh.sh
或 ./zhhh.sh
(四)添加环境变量
使用export命令将变量添加到环境中,作为临时的环境变量(一种全局变量)只在当前 Shell 会话中有效,关闭会话后将消失。
export 变量名=变量值
①创建一个脚本文件
vim zhhhh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
export MY_VAR="Old Value"
echo "原始 MY_VAR 的值是:$MY_VAR"
export MY_VAR="New Value"
echo "修改后的 MY_VAR 的值是:$MY_VAR"
③启动zhhhh.sh 脚本文件
bash zhhhh.sh
或 ./zhhhh.sh
如果是要使环境变量永久生效,可以将export
命令添加到 .bashrc
或 .bash_profile
文件中。 注意:测试前请备份.
(1)以编辑 .bashrc 文件为例
vim ~/.bashrc
(2) 在文件末尾添加
export MY_VAR="Persistent Value"
(3) 保存并退出,执行以下命令使修改生效
source ~/.bashrc
(五)内部变量
(六)变量值输出
①echo命令
- 命令用于在屏幕上打印出指定的字符串,实现在标准输出的文本显示。它不仅可以用于简单的输出,还能实现更复杂的格式控制。
- 输出控制:使用双引号包围输出内容可以防止 Shell 对大多数特殊字符进行解释。然而,美元符号($)、反引号(`) 和双引号(")在双引号中仍然保持特殊意义。如果需要在输出中显示这些字符,则需使用转义符(反斜杠 \)进行处理。
输入:
echo "显示美元符号:\$";echo "显示反引号:\";echo "显示双引号:\"";
②printf命令
- 格式化输出:指定输出格式,如字符串、整数、浮点数等。
- 控制宽度和对齐
- 转义字符支持:使用转义字符进行格式化输出。
- printf命令可以提供格式控制字符串,语法如下:
printf 格式字符串 [参数列表…]
打开脚本文件zhhh.sh
后,将以下内容复制进去,然后输入 :wq 进行保存退出。
## 示例 1: 基本用法
printf "Hello, %s!\n" "World"
## 示例 2: 格式化数字
printf "整数:%d\n" 42
printf "浮点数:%.2f\n" 3.14159
## 示例 3: 多个参数
printf "名字: %s, 年龄: %d\n" "Alice" 28
## 示例 4: 控制宽度和对齐
printf "|%-10s|%5d|\n" "Alice" 30
printf "|%-10s|%5d|\n" "Bob" 40
## 示例 5: 使用转义字符
printf "这是第一行\n这是第二行\n"
启动zhhh.sh 脚本文件
bash zhhh.sh
或 ./zhhh.sh
(七)变量值读取
使用read命令可以将变量的值作为字符串从键盘读入
read 变量
在执行read命令时可以不指定变量参数,它会将接收到的数据放置在环境变量$REPLY
中。
①创建一个脚本文件
vim zzh.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
echo "请输入您的名字:"
read name
echo "请输入您的年龄:"
read age
echo "请输入您的城市:"
read # 不指定变量名,输入存储在 $REPLY 中
echo "您的名字是:$name"
echo "您的年龄是:$age"
echo "您的城市是:$REPLY" # 使用 $REPLY
③启动zzh.sh 脚本文件
bash zzh.sh
或 ./zzh.sh
- read读入的变量可以有多个,第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给
最后一个变量
。 - 可以使用选项-n对输入的字符进行计数,当输入的字符数目达到预定数目时,
自动退出
,并将输入的数据赋值给变量。
①创建一个脚本文件
vim zhanghuan.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
echo "请输入两个数字(用空格分隔):"
read num1 num2
echo "第一个数字是:$num1"
echo "第二个数字是:$num2"
echo "请输入最多5个字符:"
read -n 5 input
echo -e "\n您输入的字符是:$input"
③启动zhanghuan.sh 脚本文件
bash zhanghuan.sh
或 ./zhanghuan.sh
(八)变量替换
可以使用以下几种变量替换形式。
${var}
:替换为变量本来的值。 多个变量则${var1} ${var2}......
${var:?message}
:如果变量var为空或已被删除
,则将消息message
发送到标准错误输出,可以用来检测变量var
是否可以被正常赋值。
①创建一个脚本文件
vim zhovyx.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
# 1. 使用 ${var}
var="Hello"
echo "当前变量的值是:${var}"
# 2. 使用 ${var:?message}
unset var # 删除变量
echo "检测变量是否已设置:${var:?变量未设置}"
③启动zhhh.sh 脚本文件
bash zhovyx.sh
或 ./zhovyx.sh
可以使用以下几种变量替换形式。
${var:-word}
:如果变量var为空或已被删除,则返回word,但不改变var的值。${var:=word}
:如果变量var为空或已被删除,则返回word,并将var的值设置为 word。${var:+word}
:如果变量var 被定义,则返回 word,但不改变 var 的值。
①创建一个脚本文件
vim yoona.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
# 1. 使用 ${var:-word}
unset var
echo "变量未设置时的输出:${var:-hello1}"
echo "变量未设置: ${var}"
# 2. 使用 ${var:=word}
echo "变量设置为word:${var:=hello2}"
echo "当前变量的值是:${var}"
# 3. 使用 ${var:+word}
var="hello3"
echo "变量定义时的输出:${var:+hello4}"
echo "变量已设置: ${var}"
③启动yoona.sh 脚本文件
bash yoona.sh
或 ./yoona.sh
总结
通过本教程的学习,读者应对Shell变量有了全面的认识,包括如何定义、使用、删除以及转换变量。同时,环境变量的概念也为脚本的灵活性提供了保障。掌握这些基本技能后,用户能够更自信地编写复杂的Shell脚本,提升工作效率和解决问题的能力。未来的学习可以围绕更高级的Shell编程技巧展开,进一步拓宽技能树,增强对Shell脚本的应用能力。