shell脚本 编程 变量 基本入门(详解)

简介: shell脚本 编程 变量 基本入门(详解)

1.变量的定义

变量是由变量名和变量值组成,两者之间用符号(=)连接。


变量命名规则:


变量名只能包含字母(a-z,A-Z)、数字(0-9)和下划线(_)。


变量名不能以数字开头。


避免使用Shell保留关键字,如if、while等。(命名时希望大家用实际意义上的作用来命名。)

#定义一个变量
name="zhangsan"
 
#定义一个数字变量
age=2
 
 
#定义一个日期变量
date="2024-3-1 15:18:58"

2.变量的引用

使用$符号来引用变量的值

# 输出变量值
echo $name
# 输出结果:zhangsan
 
echo $age
# 输出结果:2
 
echo $date
# 输出结果:2024-3-1 15:18:58

3.变量的类型

1.字符串变量:存储文本数据

2.数字变量:存储数字数据

3.数组变量:存储多个值

4.环境变量:在所有Shell中都可以使用的变量

5.位置参数变量:脚本或函数中,可以通过 $1, $2, ... 等方式引用传递给脚本或函数的参数。$0 表示脚本的名称,$# 表示传递给脚本或函数的参数个数,$@ 表示所有参数的列表。

4.变量赋值

# 直接赋值
name="hello"
 
# 命令输出赋值
age=`date +%Y`
 
# 变量替换
today=`date +%Y-%m-%d`
echo "今天是 $today"
# 输出结果:今天是 2024-03-01

5.变量的运算

Shell支持对变量进行简单的数学运算,例如加减乘除等。

基本运算符
运算符 含义
+ 加法
- 减法
* 乘法
/ 除法
% 取余

#声明变量
[root@localhost ~] num1=10
[root@localhost ~] num2=20
 
#加法
[root@localhost ~] sum=$((num1+num2))
[root@localhost ~] echo $sum
30
#减法
[root@localhost ~] jian=$((num2-num1))
[root@localhost ~] echo $jian
10
#乘法
[root@localhost ~] cheng=$((num1*num2))
[root@localhost ~] echo $cheng
200
#除法
[root@localhost ~] chu=$((num2/num1))
[root@localhost ~] echo $chu
2
#求余
[root@localhost ~] yu=$((num2%num1))
[root@localhost ~] echo $yu
0
自增自减
运算符 含义
++ 自增
-- 自减

[root@localhost ~] num=10
[root@localhost ~] echo $num
10
[root@localhost ~] ((num++))
[root@localhost ~] echo $num
11
[root@localhost ~] echo $num
11
[root@localhost ~] ((num++))
[root@localhost ~] echo $num
12
[root@localhost ~] ((num--))
[root@localhost ~] echo $num
11
[root@localhost ~] ((num--))
[root@localhost ~] echo $num
10
运算符优先级

Shell运算符的优先级与C语言相同。

# 运算符优先级
num1=10
num2=20
result=$((num1 + num2 * 2))
echo "result = $result"
# 输出结果:result = 50


字符串连接
str1="Hello"
str2="World"
echo "$str1 $str2"
# 输出结果:Hello World
expr 命令

命令用于进行表达式求值字符串操作

[root@localhost ~] num1=10
[root@localhost ~] num2=20
[root@localhost ~] sum=$(expr $num1 + $num2)
[root@localhost ~] echo $sum
30
let 命令

let 命令也用于执行算术运算,并且它允许在表达式中使用变量名而不需要 $ 符号。

let "result = a + b"
 
[root@localhost ~] let "sum= sum +num1"
[root@localhost ~] echo $sum
40
浮点数运算

Shell本身对浮点数运算支持较差,通常需要借助外部工具如bc(计算器)。

[root@localhost ~] sum=$(echo "$a + $b" | bc)
[root@localhost ~] echo $sum
2.8

6.变量的删除

使用unset命令删除变量。

# 删除变量
unset name
echo $name
# 输出结果:空白
 
 
unset age
echo $age
 
# 输出结果:空白

补充知识

获取环境变量

使用env命令获取所有环境变量的列表。

# 获取环境变量
env

设置环境变量

使用export命令将变量导出为环境变量。

# 设置环境变量
export name
相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
114 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
66 2
6种方法打造出色的Shell脚本
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
61 1
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
51 2
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
58 6
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
110 1
|
Shell Linux Windows
Shell入门之概念
1、一切皆是文件: 在bash Shell 中一切皆是文件,不管是我们认为的文本文件,还是那些文件夹的东西,在这里都是文件,Linux只管比特和字节流,而不关心他们最终组成了什么格式,这些工作交给在Linux 上的运行的软件来检测和鉴别。
767 0
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
82 12
|
2月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
76 2
下一篇
DataWorks