目录
1.概述
在1个文件中写Linux代码, 然后通过Shell解析器来解析的过程.
流程: 在后缀名为.sh的文件中写Linux命令 => 执行该Shell脚本=> Shell解析器会解析该脚本 => 执行并查看结果
2.编写Shell及运行
# 如何编写Shell脚本?
1. 在后缀名为 .sh 的文件中进行编写.
2. 第一行代码为: 指定用什么Shell解析器来解析该脚本, 一般写 #/bin/bash
# 如何运行Shell脚本呢?
1. sh 脚本名.sh # 官方推荐, 不需要对Linux脚本有执行权.
2. source 脚本名.sh # 野路子写法, 不需要对Linux脚本有执行权.
3. 相对路径. # 必须对Linux脚本有执行权.
4. 绝对路径. # 必须对Linux脚本有执行权.
2.编写Shell及运行
# 如何编写Shell脚本?
1. 在后缀名为 .sh 的文件中进行编写.
2. 第一行代码为: 指定用什么Shell解析器来解析该脚本, 一般写 #/bin/bash
# 如何运行Shell脚本呢?
1. sh 脚本名.sh # 官方推荐, 不需要对Linux脚本有执行权.
2. source 脚本名.sh # 野路子写法, 不需要对Linux脚本有执行权.
3. 相对路径. # 必须对Linux脚本有执行权.
4. 绝对路径. # 必须对Linux脚本有执行权.
3.定义变量
定义变量
echo ${name}
zhangsan
{}可以省略
删除变量, 即使不删除, 重启服务器, 该变量也会被自动删除.
unset name
如果字符串值有空格, 必须用引号包裹.
hobby='eat shuij'
使用变量、执行运算、执行Linux命令的区别
使用变量 $变量名
执行运算 $[]
执行Linux命令 $()
4.字符串操作
字符串操作
以后定义字符串, 推荐使用双引号
echo my name is "$name"
my name is zhangsan
双引号包裹的$有特殊意义, 单引号包裹则原样输出.
5.反引号
反引号
echo `date`
2023年 05月 12日 星期五 11:28:15 CST
如果要执行Linux命令, 则: 用反引号包裹
如果要执行Linux命令, 则: 用$()包裹 反引号与$()作用相同
[root@node1 ~]# dt=`date`
[root@node1 ~]# echo $dt
2023年 05月 12日 星期五 11:29:00 CST
[root@node1 ~]# dt2=$(date)
[root@node1 ~]# echo $dt2
2023年 05月 12日 星期五 11:29:16 CST
6.动态传参
动态传参
#!/bin/bash # 定义一些变量, 分别记录姓名, 年龄, 性别
name='刘亦菲'
age=33
gender='女'
# 输出上述的内容
echo "你好, 我叫$name, 今年$age岁了, 我的性别是$gender"
# 如下是和动态传参相关的内容
echo "当前的文件名是: $0"
echo "接收到的参数总个数为: $#"
echo "接收到的所有参数为: $*"
echo "第1个参数值为: $1"
echo "第2个参数值为: $2"
echo "第3个参数值为: $3"
7.if语句
if语句入门
相关
数字:
运算符 说明
-eq 检测两个数是否相等,相等返回 true。
-ne 检测两个数是否不相等,不相等返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。
字符串:
判断符 说明
-n STRING 字符串长度不为零
-z STRING 字符串长度为0
= 判断两个字符串是否一样
!= 判断两个字符串是否不一样
文件
判断符 说明
-f 存在且是普通文件
-d 存在且是目录
-h 存在且是符号链接
-e 文件存在
–r 文件存在并且可读
–w 文件存在并且可写
–x 文件存在并且可执行
格式
if condition //条件, 条件要用 [] 包裹.
then
command1 //符合条件后, 就会执行这里的内容
command2
...
commandN
fi
注意: 不允许将以上格式 写成一行.
案例
1: 判断当前系统是否有多个ssh进程,如果有则打印true
#!/bin/bash
if [ $(ps -ef | grep -c "ssh") -gt 1 ] //这里的-c就是count的意思, 即: 统计个数的.
then
echo "true"
fi
2: 判断/media/cdrom目录是否存在,若不存在就去创建这个目录
#!/bin/bash
DIR="/media/cdrom"
if [ ! -d $DIR ]
then
mkdir -p $DIR
fi
8.if-else语句
if-else语句
if else 语法格式:
if condition //条件, 用[]包裹
then
command1 //符合条件后, 执行的内容
command2
...
commandN
else
command //不符合条件后, 执行的内容.
fi
# 案例3: 根据年龄判断是否成年
#!/bin/bash
提示用户录入他/她的年龄, 并接收.
read -p "请录入您的年龄: " age
if [ $age -ge 18 ]
then
echo '恭喜您, 成年了, 可以上网了!'
else
echo '小屁孩儿, 滚回去学习!'
fi
9.if-else-if语句
if-else if语句
if else-if else 语法格式:
if condition1 # 条件1
then
command1 # 满足条件1后, 执行的内容
elif condition2 # 条件2
then
command2 # 满足条件2后, 执行的内容
else
commandN # 所有条件都不满足, 则执行这里.
fi
# 需求4: 判断两个变量是否相等
#!/bin/bash
read -p "请录入第12个整数: " a
read -p "请录入第2个整数: " b
if test $a -eq $b
then
echo "$a 和 $b 相等"
elif test $a -gt $b
then
echo "$a 比 $b 大"
else
echo "$a 比 $b 小"
总结
以上是关于Linux脚本的知识模块,希望对您有所帮助!