目录
- 前言
- 一、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脚本的应用能力。











![[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作](https://i-blog.csdnimg.cn/direct/036b96f856d24e0da802ef18ab88d59b.png)







