shell 脚本(基础入门)
1、shell的作用是:
- 解释执行用户输入的命令或者程序等
- 用户输入一条命令,shell就解释一条
- 键盘输入命令,Linux给予响应的方式,称之为交互式
shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入,解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给用户看到结果。
2、shell的变量
- 只包含字母、数字和下划线
- 不能以数字开头
- 避免使用 Shell 关键字
- 使用大写字母表示常量
- 避免使用特殊符号
- 避免使用空格
变量类型
-
字符串变量
可以使用单引号 ’ 或双引号 " 来定义字符串
-
整数变量
在一些Shell中,你可以使用 declare 或 typeset 命令来声明整数变量。
-
数组变量
Shell 也支持数组,允许你在一个变量中存储多个值。
数组可以是整数索引数组或关联数组
-
环境变量
由操作系统或用户设置的特殊变量,用于配置 Shell 的行为和影响其执行环境。
-
特殊变量
KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲**表示传递给脚本的参数数量,…? 表示上一个命令的退出状态等。
3、Shell 的注释
3.1 单行注释
使用 #
符号开始一个单行注释。#
符号后面的内容直到行尾都会被解释器忽略。
#这是单行注释
3.2 多行注释(块注释)
虽然 Shell 没有专门的多行注释语法,但是你可以使用 #
符号来开始一个多行注释块。这种注释块会一直持续到遇到另一个 #
符号。
# 这是一个多行注释的开始
# 你可以在这里写很多行注释
# 直到再次遇到 #
3.3 Here Document(文档字符串)
Here Document 是一种特殊类型的注释,它可以用于将输入传递给命令。虽然它主要用于输入,但也可以用于创建注释块。
cat <<'EOF'
# 这是一个多行注释的开始
# 你可以在这里写很多行注释
# 直到再次遇到 #
EOF
在编写 Shell 脚本时,建议合理使用注释,以提高代码的可读性和可维护性。注释应该清晰、简洁,并且与代码保持一致。
4、Shell脚本的传参
4…1参数传递机制
Shell 脚本可以通过命令行从外部接收参数。这些参数可以在脚本内部通过 $1
、$2
、$3
等特殊变量来访问。这些特殊变量被称为位置参数,它们按顺序存储了传递给脚本的参数值。
在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为 $n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。
例如可以使用 $1、$2 等来引用传递给脚本的参数,其中 $1 表示第一个参数,$2 表示第二个参数,依此类推。
4.2 获取所有参数
可以使用 $@
或 $*
特殊变量来获取所有传递给脚本的参数。
$@
:表示所有位置参数的列表,每个参数都作为单独的单词处理。$*
:与$@
类似,但它将所有参数视为一个单词。
4.3 获取参数个数
可以使用 $#
特殊变量来获取传递给脚本的所有参数的个数。
4.4 特殊参数
$*
和$@
:用于引用所有位置参数。$#
:传递给脚本的所有参数的个数。$?
:最后一次命令的退出状态。$$
:当前 Shell 进程 ID(PID)。
这些特殊参数在脚本编程中非常有用,尤其是在需要与脚本调用者交互或处理命令行输入时。
4.5 示例
下面是一个简单的 Shell 脚本示例,展示了如何接收和处理参数。
#!/bin/bash
# 打印脚本名称
echo "脚本名称: $0"
# 打印所有参数
echo "所有参数: $@"
# 打印参数个数
echo "参数个数: $#"
# 打印第一个参数
echo "第一个参数: $1"
# 打印第二个参数
echo "第二个参数: $2"
# 打印第三个参数
echo "第三个参数: $3"
4.6 特殊参数示例
#!/bin/bash
# 打印所有参数,使用 $* 和 $@
echo "所有参数: $*"
echo "所有参数: $@"
# 打印参数个数
echo "参数个数: $#"
# 打印上一个命令的退出状态
echo "上一个命令的退出状态: $?"
# 打印当前 Shell 的进程 ID
echo "当前 Shell 的进程 ID: $$"
打印参数个数
echo “参数个数: $#”
打印上一个命令的退出状态
echo “上一个命令的退出状态: $?”
打印当前 Shell 的进程 ID
echo “当前 Shell 的进程 ID: $$”
[外链图片转存中...(img-QsfnqmLy-1714298351395)]