linux shell脚本 基础认识

发布时间:2024年01月23日

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

什么是shell脚本

? ? ? 就是将命令按顺序一一列出,最后自动执行,执行需要权限,也可以直接使用路径,脚本其实并不复杂,通用脚本环境改变后依然可以使用脚本

脚本的构成

? ? ? ? 1.脚本声明(解释器):第一行开头"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash是默认的解释器还有其他类型的解释器,#!/bin/python? ? #!/bin/expert等

? ? ? ? 2.注释信息:以#开头的语句表示为注释信息? ? ? ? #注释

? ? ? ? 3.可执行语句:比如echo命令用于输出" "之间的字符串

脚本执行逻辑

? ? ? ? 1.顺序执行:程序按照自上而下顺序执行

? ? ? ? 2.选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

? ? ? ? 3.循环执行:程序执行过程中需要重复执行多次某段语句

执行脚本方式

? ? ? ? 1.按照指定路径执行文件(需要有执行权限)

? ? ? ? 2.指定shell解释器去执行(不需要权限) bash 脚本名

? ? ? ? 3.使用source和 . 执行(不需要权限)? ? ? ?

? ? ? ? ?推荐使指定路径和解释器去执行脚本,会开启子进程去执行脚本,不会影响当前操作,source和 . 不会开启子进程,会影响当前进程

脚本错误

? ? ? ?1.命令错误:命令出错不会影响接下来的命令继续

? ? ? ?2.语法错误:会影响接下来的命令继续执行

? ? ? ?3.逻辑错误:只能自己筛查

?代码检查

? ? ? ? 1.bash -n? ?检查语法错误? ? ?将脚本的所有语句执行一遍

? ? ? ? 2.bash -x? ? 逻辑错误? ? ? 检查语法错误

? ? ? ? ??set -e? 写在脚本前面,出错立即停止

? 变量基础

? ? ? ? ? 定义变量: 变量名=变量值? ? ? ?

? ? ? ? ? 调整变量:echo $变量名

? ? ? ? ? 取消变量:unset 变量名

? ? ? ? ? 追加变量: 变量名+=追加的内容

? ? ? ? ? export? 变量? ? ?可以让子进程也可以使用变量

? ? ?变量命名要求

? ? ? ? ? ?1.区分大小写

? ? ? ? ? ?2.不能使用数值开头

? ? ??特殊符号

? ? ? ? ? ? 1.双引号" " 可以识别变量

? ? ? ? ? ? 2.单引号 ' '? 不能识别变量

? ? ? ? ? ? 3.反撇 ` ` 调用命令的执行结果? ? ?等价于 $()

? ? ? ? ? ? 4. { }? 定义变量名的范围

? ? ? ?read -p???从键盘输入的内容变成变量

? ? ? ?变量的作用范围

? ? ? ? ? ? ? 默认情况下,新定义的变量只能在当前的shell环境有效,因此称为局部变量,当子程序或新的shell环境中,局部变量将无法再起作用

? ? ? ? ? ? ? 可以通过内部命令export将指定的变量变为全局变量,使用户定义的变量所在的子shell环境中可以继续使用

? ? ? ? ? ? ? ?export 变量名

? ? ?整数运算? ? ?? ? ??

? ? ? ? 运算符:+? ?-? ?\*? ?/? %(取余)

????????expr 算术表达式

? ? ? ? let? ?变量名=变量1 运算符 变量2? ?...

? ? ? ? echo $变量名

? ? ? ? 变量名=$[算术表达式]

? ? ? ? echo $变量名

? ? ? (变量名=算术表达式)

? ? ? ??echo $变量名

? ? ? ? echo $[RANDOM] 取随机数 范围是0-32767?

? ? ? ? echo $[RANDOM%33] 取0-32的随机数

? ? ? ? echo $[RANDOM%33+1] 取1-33的随机数

特殊变量

????????预定义变量

? ? ? ? ? ? ? ?$*? ? ? 返回所有的位置参数,所有参数当作一个整体返回

? ? ? ? ? ? ? ?$@? ? 返回所有的位置参数,所有参数当作个体返回

? ? ? ? ? ? ? ?$?? ? ? 表示前一条命令执行的返回状态,返回值为0表示正确,返回任何非0值均表示出现异常

? ? ? ? ? ? ? ?$#? ? ? 表示命令行中位置参数的总个数

? ? ? ? ? ? ? ?$0? ? ? ?表示当前执行的脚本或程序的名称

? ? ? ? ? ? ? ?$$? ? ? ? 当前bash的进程id

? ? ? ? ? ? ? ?$!? ? ? ? 后台任务最后一个id

? ? ? ? 环境变量

? ? ? ? ? ? ? ? env?看到所有的环境变量

? ? ? ? ? ? ? ? ?$USER 表示用户名称

? ? ? ? ? ? ? ? ?$HOME 表示用户的家目录

? ? ? ? ? ? ? ? ?$LANG? 表示语言和字符集

? ? ? ? ? ? ? ? ?$PWD? ? 表示当前所在工作目录

? ? ? ? ? ? ? ? ?$PATH? ? 表示可执行用户程序的默认路径

? ? ? ? ? ?位置变量

?????????????????位置变量也称为位置参数,使用$1 $2 $3....$9 表示? $0表示当前脚本的名称

????????????????????????

文章来源:https://blog.csdn.net/m0_66372974/article/details/135770112
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。