Linux之Shell编程
Shell是一个命令解释器,他为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
脚本格式要求:1、脚本以#!/bin/bash开头 2、脚本需要有可执行权限
脚本常用的执行方式
方式1(输入脚本的绝对路径或相对路径)说明:首先要赋予helloworld.sh脚本+x权限,再执行脚本 ./hello.sh /root/shcode/hello.sh
方式2(sh+脚本)说明:不用赋予脚本+x权限,直接执行即可 【sh hello.sh】
【vim hello.sh】
{#!/bin/bash
echo “hello,world”}
shell变量介绍:
1、Linux Shell中的变量分为,系统变量和用户自定义变量
2、系统变量:$HOME、$PWD、$SHELL、$USER等等,比如:echo $HOME等等
3、显示当前shell中所有变量:【set】
自定义变量基本语法:
1、定义变量:变量名=值
2、撤销变量:【unset 变量】
3、声明静态变量:【readonly 变量】,注意:不能unset
定义变量的规则:
1、变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2、等号两侧不能有空格
3、变量名称一般习惯为大写
将命令的返回值赋给变量
1、A=`date`反引号,运行里面的命令,并把结果返回给变量A
2、A=$(date)等价于反引号
设置环境变量
【export 变量名=变量值】将shell变量输出为环境变量/全局变量
【source 配置文件】让修改后的配置信息立即生效
【echo $变量名】查询环境变量的值
快速入门:1、在/etc/profile文件中定义TOMCAT_HOME环境变量;2、查看环境变量TOMCAT_HOM的值;3、在另一个shell程序中使用TOMCAT_HOM;注意:在输出TOMCAT_HOM环境变量之前,需要让其生效【source /etc/profile】
shell脚本多行注释【:<<! !】
位置参数变量介绍:当我们执行一个shell脚本是,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息
基本语法:
$n(功能描述:n为数字,$0代表命令本身(./myshell.sh 100 200,其中$0代表./myshell.sh,$1代表100),$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})
$*(功能描述:这个变量代表命令行中所有的参数(100和200),$*把所有的参数看成一个整体)
$@(功能描述:这个变量也代表命令行中所有参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)
预定义变量介绍:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法:
$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号)
$?(功能描述:最后一次执行的命令的返回状态。如何这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己决定),则证明上一个命令执行不正确了)
运算符基本语法:
1、"$((运算式))"或"$[运算式]"或者expr m + n
2、注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量,需要使用``(反引号)括起来
3、expr m - n
4、expr \*,/,% 乘,除,取余
条件判断基本语法:
if 【 condition 】(注意condition前后要有空格)
then
echo”equal“
fi
#非空返回ture,可使用$?验证(0为ture,>1为false)
常用的判断条件:
1、=,字符串比较
2、两个整数比较:-lt小于;-le小于等于;-eq等于;-gt大于;-ge大于等于;-ne不等于
3、按照文件权限进行判断:-r有读的权限;-w有写的权限;-x有执行的权限
4、按照文件类型进行判断:-f文件存在并且是一个常规的文件;-e文件存在;-d文件存在并是一个目录
case $变量 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值1,则执行程序1
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for循环
基本语法1:
for 变量 in 值1 值2 值3...
do
程序
done
基本语法2:
for((初始值;循环控制条件;变量变化))
do
程序
done
while循环
while 【 条件判断式 】
do
程序
done
read读取控制台输入
【read 选项 参数】选项:-p指定读取值时的提示符;-t指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了;
函数介绍:有系统函数,也可以自定义函数
自定义函数基本语法:
function funname()
{
Action;
【return int;】
}
调用直接写函数名:funname【值】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南