-
第一章:变量
-
前言
-
什么是shell
- Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。
-
shell的特点
- 跨平台:大多数 Shell 都可以在不同的类 UNIX 系统上运行,包括 Linux 和 macOS。
- 易于编写脚本:用户可以通过编写脚本来实现自动化操作,大大简化了复杂任务的执行。
- 灵活性:Shell 支持多种内置命令,并允许通过管道、重定向等机制,将多个命令组合起来使用。
- 用户友好:Shell 允许用户自定义环境变量、快捷命令和别名,增强了用户体验。
- 强大的命令处理:支持控制流、条件判断、循环等逻辑操作,具备一定的编程功能。
-
shell可以做什么
- 文件管理:通过命令创建、删除、复制、移动文件或目录。
- 系统管理:执行系统管理任务,如查看和终止进程、监控系统状态、管理用户和权限。
- 自动化任务:通过编写 Shell 脚本,自动执行批量任务,比如备份、日志管理等。
- 程序执行:可以调用和运行各种程序、脚本或应用,并能处理它们的输出结果。
- 网络操作:通过命令控制网络接口,进行 FTP、SSH 等网络操作。
-
shell的执行方式
-
交互式执行:用户在命令行提示符下输入一条命令,Shell 立即解释并执行该命令。执行结束后,返回命令行等待下一条输入。
-
脚本式执行:用户将多个命令写入一个文件(脚本文件),然后让 Shell 执行该文件中的命令。通过这种方式,用户可以将重复性任务自动化。
-
先写一个简单的脚本
-
#简单的不标准test使用 echo 'nihao' #shell没有结束符,换行结束,有些用;结束但是很少,还常用
用下面的方式执行
-
-
sh 文件名.sh
-
bash 文件名.sh
-
. 文件名(.+空格).sh
-
soucre 文件名.sh
-
./文件名.sh
-
区别
-
sh,bash是告诉计算机无论脚本的 Shebang 行是什么是什么都用sh,bash执行,当然其实/usr/bin/sh是/usr/bin/bash的软连接(脚本在新的子 Shell 中执行,不会影响当前 Shell 的环境变量和设置)
-
.表示source:直接在当前 Shell 环境中执行脚本文件。
.
是一个 Shell 内置命令,等同于source
-
./:在一个新的子 Shell 中执行脚本,并且会根据脚本中的 Shebang 行指定的解释器来运行,要执行权限
-
-
-
-
shell的解释器在哪
- 查看当前使用的 Shell:在命令行输入
echo $SHELL
可以查看当前使用的 Shell 解释器路径。 - 常见 Shell 解释器路径:
/bin/bash
:Bash 的路径。/bin/sh
:Bourne Shell 的路径。
- 查看当前使用的 Shell:在命令行输入
-
shell脚本的建议格式
-
#!/bin/bash #Shebang行:使用 #!/bin/bash 指定脚本应由 Bash 解释器运行。 #----------------------------------- # 脚本名称: backup_script.sh # 描述: 该脚本用于将指定的源目录备份到目标目录, # 并记录操作日志,处理潜在的错误。 # 作者: Your Name # 日期: 2024-10-13 # 版本: 1.0 #-----------------------------------# 调试模式设置: # 开启严格模式,确保脚本执行时遇到错误会立即退出: # -e: 当命令执行失败时退出脚本。 # -u: 使用未定义的变量时退出。 # -o pipefail: 如果管道中的任一命令失败,整个管道失败。 set -euo pipefail#-----------自己的代码写在下面-------------
这只是建议,可以不管,但是建议这么写
-
-
-
变量
-
简介
- 如果你用过其它语言你就了解,如果你没有用过。那么变量就是酒店门牌号,具体的操作如下:有一家酒店住人(就是内存放数据),你定了一间房(告诉内存准备空间),觉得444门牌不吉利但不愿意换房,换了门牌号666(告诉系统变量名),你住了(向变量内放了内容),第二天退房(变量死亡)。
-
自定义变量
- 用户自定义变量是用户在脚本中定义的变量,用于存储数据、路径、配置等信息。与系统预定义的变量不同,用户自定义变量通常以用户的需求为基础。
-
定义变量
- 变量名=值(文本引号内,数字没引号){变量名的要求:可以用字母大小写,数字,下划线组成,但是数字不开头也不能是全数字,不要用bash中的关键字,最好见名知意}
-
使用变量
- echo $变量名(echo表示打印,$表示调出变量内容,加起来就是调出变量内容然后打印出来)
-
重复定义变量
- 已有变量名=新值(会覆盖旧值)
-
变量查看set
- set可以查看当前系统所有变量
-
变量删除
- unset 变量名(一般来说变量没用了就不用管了,除非对内存要求严格,比如嵌入式)
-
交互式定义变量
- read 变量名(read函数从控制台读数据,意思是将读到的数据给变量)
- read -p "在-p的条件下,你可以向终端输出一些语句" 变量名
-
注意:三种引号
- 单引号(
'
):将其中的文本视为字面量,不进行任何变量替换或命令替换。 - 双引号(
"
):允许变量替换和命令替换。在引号内使用$
或反引号(`
)会被解释。 - 反引号(
`
):用于命令替换。反引号内的命令会被执行,其输出结果会替换原位置。现代 Shell 还支持使用$(...)
语法来实现命令替换反引号,这种方式更清晰且更易于嵌套。
- 单引号(
-
整数运算(只能用整数,都支持变量$变量)
-
$(())方法
- 用途:用于进行算术运算,是现代 Shell 中最常用的方式。
- 格式:表达式写在
$((...))
内部,不需要空格。 - 优点:支持多种运算,包括加法+、减法-、乘法*、除法/和取余%。
-
$[]方法
- 用途:也是进行算术运算的一种方式,但不推荐使用,因为在某些 Shell 中可能会被弃用。
- 格式:表达式写在
$[...]
内部,不需要空格。
- let方法(在声明变量的同时完成计算)
- 注意:不支持浮点数运算。
- 格式:可以省略
$
符号,直接使用变量名。比如let 变量c=变量1+变量2 - 用途:用于计算算术表达式,支持多种运算,常用于循环和条件语句中。
- expr方法
- 用途:用于计算表达式,支持整数运算。
- 格式:需要在
expr
和运算数之间使用空格,要放在$()内。+-/%,\*(乘有点特殊) - 注意:通常用于较旧的 Shell 脚本,现代脚本中更常用
$(())
。
-
-
小数运算(了解){需要用到bc(计算器)命令,没有就yum -y install bc}
- echo “表达式”|bc:因为bc是命令,所以通过echo将表达式输出到终端,使用管道符传递给bc处理
-
环境变量(了解)
-
位置变量与预定义变量(了解)
-
-