Shell脚本基本规则

Shell

外层应用程序---->Shell命令解释器---->内核---->硬件
为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序
用户可以用Shell来启动、挂起、停止、甚至编写一些程序

简单的Shell脚本

1)、格式要求
以#!/bin/bash开头(用bash解析)
脚本有可执行权限
文件后缀一般为(.sh)
echo ‘’‘’输出

2)、两种执行方式
当前路径:./文件名
绝对路径:/
若不赋予可执行权限,可使用sh ./文件名执行(不推荐)

3)、注释方式
单行:#
多行: :<< 内容
!
4)、后台运行
./文件名 &
在这里插入图片描述在这里插入图片描述

Shell变量

1)、系统变量:$HOME $PWD $SHELL $USER等
PS:显示当前SHELL中所有变量:set

2)、用户自定义变量:
①定义: 变量=值
引用或输出的时候需要 $
②撤销: unset 变量
③声明静态变量:readonly 变量 PS:不能unset

3)、变量命名规则
①由字母、数字和下划线组成、不能以数字开头
②等号两侧不能有空格
③变量名称一般习惯大写

4)、将命令返回值赋给变量
A=`ls -alh` 反引号
A=$(ls -alh)

5)、设置环境变量(在etc/profile中添加,在其它Shell中可使用)
①export 变量名=变量值 将该变量输出为环境变量
②source 配置文件 使得修改后的配置信息立即生效
③echo $变量名 查询环境变量的值

6)、位置参数变量
执行Shell脚本时,有参数需要传入到文件类部进行使用,就可以使用到位置参数变量
①基本语法:
$n (n为数字,表示1~9个参数,十以上的参数需要用大括号包起来${n})
PS:$0代表所调用Shell脚本的语句,如:./abcd.sh
$* (代表命令行中所有的参数,把所有的参数看成一个整体)
$@ (代表命令行中所有的参数,把每个参数区分对待)
$# (代表命令行中所有参数的个数,不统计$0)

7)预定义变量
Shell预先定义好的变量,可直接在Shell脚本中使用
①基本语法:
$$ (当前进程的进程号(PID))
$? (最后一次执行命令的返回状态,0表示正确运行,非0(可由自己定义)表执行不正确)
在这里插入图片描述在这里插入图片描述

扫描二维码关注公众号,回复: 10301020 查看本文章

运算符

1)、基本语法
( ( ) ) ((运算式))或 [运算式]
②expr m + n (运算符间要有空格,给变量赋值时,需使用反引号括起来)
运算符:* 乘 , / 除 ,% 取余
在这里插入图片描述在这里插入图片描述

条件判断

1)、基本语法
[ condition ] 非空返回true,可使用$?验证(condition前后有空格)

2)、常用判断条件
①整数的比较
= (比较字符串) -lt(小于) -le(小于等于)
-eq(等于) -gt(大于) -ge(大于等于) -ne (不等于)
②按照文件权限进行判断
-r 有读权限 -w 有写权限 -x 有执行权限
③按照文件类型进行判断
-f 文件存在并且是一个常规文件 -e文件存在
-d 文件存在并且是一个目录

在这里插入图片描述在这里插入图片描述

流程控制

1)、if判断
基本语法:
if [ 条件判断 ]; then 执行语句 fi
if [ 条件判断 ] then 执行语句 elif[ 条件判断 ] then 执行语句 fi (一般使用)
在这里插入图片描述在这里插入图片描述
2)、case
case $变量名 in
“值1”) 执行语句 ;;
“值2”) 执行语句 ;;
*) 执行语句 ;; #表其它情况
esac
在这里插入图片描述在这里插入图片描述

3)、for循环 (使用到$*,$@)
for 变量 in 值1 值2 值3 …
(使用“$*”,会执行一次,使用“$@”,会循环多次,不使用“”时都表示多个参数)
do
执行语句
done
在这里插入图片描述在这里插入图片描述
for((初始值;循环控制条件;变量变化(可使用i++)))
do
执行语句
done
在这里插入图片描述在这里插入图片描述

4)、while循环
while [ 条件判断 ] (有空格)
do
执行语句
done
在这里插入图片描述在这里插入图片描述

读取控制台输入

read [option] [parameter] (和echo 相当于输入输出,若不指定变量,默认赋值给变量REPLY)
选项:
-p: 指定读取值时的提示符。
-t: 指定读取值时等待的时间(秒),超时就不会等待。
-a arrayname : 把单词清单读入arrayname的数组里。
-r :line允许输入包含反斜杠。
-t num:指定读取等待时间为num秒。
-n num:从输入中读取num个字符并存入变量,不需要按回车读取。
-d “:” :定界符“:”结束输入行。
在这里插入图片描述在这里插入图片描述

函数

1)、系统函数(常用)
①basename [pathname] [suffix]
basename [string] [suffix]
选项:suffix ,若suffix被指定,会将pathname或string中的suffix去掉
作用:返回完整路径最后的部分,去掉最后一个/前的所有字符(包括/),用于获取文件名
②dirname 类似于basename,除去文件部分而返回路径部分

2)、自定义函数
基本语法:’[]'表可省略
[ function ] funname[()] (不需要形参)
{
执行代码
}
调用直接使用 funname [ 参数]

PS:函数可以有返回值,在调用函数后,通过$?提取,如下图,直接用变量接取到的“返回值”是函数内部echo的内容
在这里插入图片描述
在这里插入图片描述

发布了82 篇原创文章 · 获赞 1 · 访问量 1488

猜你喜欢

转载自blog.csdn.net/qq_41891805/article/details/104490404