如何巧妙运用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, whileShell 的关键字,不能作为变量名。

(二)变量的使用

①创建一个脚本文件
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脚本的应用能力。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoona1020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值