前言
上篇文章我们探讨了shell脚本变量的基本原理和概念,本篇我们基于上面的内容增加一些实战。
如果你还没有学习shell脚本的变量理论,可以点击链接:【跟晓月学shell脚本】掌握shell脚本变量原理及概念
可以关注我的云原生社区:云原生社区
也可以关注我的英语社区:从零开始学英语
文章目录
- 前言
- 一. 环境变量的案例
- 二. 位置变量脚本案例
- 三. 自定义脚本案例
- 3.1 自定义变量的案例
- 3.2 变量的命名规则
- 3.3 变量命名规则测试
- 3.4 单引号和双引号的区别
- 总结
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家
😉😉 💕 座右铭:先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. 环境变量的案例
环境变量在日常工作中,我们用的比较多,使用环境变量,我们可以很轻松的调用一些常用的参数。
[root@mufeng41 ~]# cat ev.sh
#!/bin/bash# 设置环境变量
export MY_VAR="Hello, World!"
export ANOTHER_VAR=42# 打印环境变量
echo "MY_VAR: $MY_VAR"
echo "ANOTHER_VAR: $ANOTHER_VAR"# 使用环境变量进行计算
result=$((ANOTHER_VAR + 10))
echo "Result: $result"
执行结果:
[root@mufeng41 ~]# ./ev.sh
MY_VAR: Hello, World!
ANOTHER_VAR: 42
Result: 52
二. 位置变量脚本案例
位置变量是指通过命令行参数传递给Shell脚本的值,示例:
这里的位置变量和特殊变量一起使用:
#!/bin/bash# 打印脚本名称
echo "脚本名称: $0"# 打印位置参数个数
echo "位置参数个数: $#"# 打印所有位置参数
echo "所有位置参数: $@"# 打印第一个位置参数
echo "第一个位置参数: $1"# 打印第二个位置参数
echo "第二个位置参数: $2"# 打印所有位置参数的总和
sum=0
for arg in "$@"; dosum=$((sum + arg))
done
echo "所有位置参数的总和: $sum"
我们在脚本中遍历了所有的位置参数,并计算它们的和
执行结果:
[root@mufeng41 ~]# chmod +x wz.sh
[root@mufeng41 ~]# ./wz.sh 10 20 30
脚本名称: ./wz.sh
位置参数个数: 3
所有位置参数: 10 20 30
第一个位置参数: 10
第二个位置参数: 20
所有位置参数的总和: 60
[root@mufeng41 ~]#
三. 自定义脚本案例
3.1 自定义变量的案例
#!/bin/bash# 自定义变量
name="John Doe"
age=30
location="New York"# 打印自定义变量的值
echo "姓名: $name"
echo "年龄: $age"
echo "位置: $location"# 自定义变量的计算
result=$((age + 10))
echo "年龄增加10后的结果: $result"# 字符串连接
greeting="Hello"
message="$greeting, $name! Welcome to $location."
echo "$message"
执行结果:
[root@mufeng41 ~]# ./hello.sh
姓名: John Doe
年龄: 30
位置: New York
年龄增加10后的结果: 40
Hello, John Doe! Welcome to New York.
3.2 变量的命名规则
- 变量由字母或者下划线打头,不允许数字开头,后面由字母,数字或者下划线组成,并且大小写意义不同。
- 在使用变量时候,需要在变量名字前面加$
- 等号两边不能有空格
- 变量值的叠加,使用${}
- 命令替换,使用$()或者反引号
- 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
3.3 变量命名规则测试
1. 变量名测试:
[root@ecs-c13b ~]# 2eee=4 ## 不能以数字开头
-bash: 2eee=4: command not found
[root@ecs-c13b ~]# name=zhangshan ### 大小写的区别
[root@ecs-c13b ~]# NAME=lisi
[root@ecs-c13b ~]# echo $name
zhangshan
[root@ecs-c13b ~]# echo $NAME
lisi
2. 关于${} 的使用,拼接测试
[root@ecs-c13b ~]# ctest=mysql
[root@ecs-c13b ~]# echo $ctest
mysql
[root@ecs-c13b ~]# echo $ctest-txt
mysql-txt
[root@ecs-c13b ~]# echo $ctest.db.log-txt
mysql.db.log-txt
[root@ecs-c13b ~]# echo {$ctest}db.log
{mysql}db.log
[root@ecs-c13b ~]# echo ${ctest}db.log
mysqldb.log
3. 能不能不加{}
[root@ecs-c13b ~]# echo $ctestdb.log-txt
.log-txt
4. 使用反引号或者$()
[root@ecs-c13b ~]# echo date
date
[root@ecs-c13b ~]# echo $(date)
Wed Aug 5 15:53:03 CST 2020
[root@ecs-c13b ~]# echo `date`
Wed Aug 5 15:53:15 CST 2020
[root@ecs-c13b ~]#
5. 特殊用法
[root@ecs-c13b ~]# date +"%Y-%m"
2020-08
[root@ecs-c13b ~]# date +"%Y-%m-%d-%H%M%S"
2020-08-05-155600
[root@ecs-c13b ~]#
3.4 单引号和双引号的区别
在日常应用中我们经常用到单引号和双引号,今天我们来看看他们有什么区别:
‘’ 在单引号中所有的字符包括特殊字符($,‘’,`和\)都将解释成字符本身而成为普通字符。
“” 在双引号中,除了$, ‘’,`和\以外所有的字符都解释成字符本身,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义
注:\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$
将输出“$”
符号,而不当做是变量引用
[root@ecs-c13b ~]# name=mufengxiaoyue
[root@ecs-c13b ~]# echo $name
mufengxiaoyue
[root@ecs-c13b ~]# echo '$name'
$name
[root@ecs-c13b ~]# echo "$name"
mufengxiaoyue
单引号输出的是变量本身,双引号输出的是变量的值。
总结
本文主要讲解了shell脚本变量的实战案例,希望对你有用, 我们下篇文章再见。
💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 日拱一卒无尽有,功不唐捐终入海
💕 喜欢的话记得点赞收藏哦