linux shell 编程学习笔记
shell 是一个命令解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序。
shell 快速入门:
脚本的格式要求
1)脚本 以 #!/bin/bash 开始 告诉脚本是以bash来解析的
2)案例 创建一个 echo hello word
#!/bin/bash
echo "hell word"
退出wq
2.1 文件 必须要可执行权限。
chmod 744 myshell.sh 更改用户可执行权限 。 脚本+x 权限
执行 ./myshell.sh 相对路径执行
./root/shell/myshell.sh 绝对路径执行
3.shell 的变量介绍
3. 1 linux shell 中的变量分为,系统变量和用户自定义变量。
3.2 系统变量:$HOME、$PWD、$SHELL $USER 等等
比如echo $HOME 等
案例:输出 系统变量
显示当前shell 所有的变量 set (退出)
4 shell 变量的定义
基本语法
4.1定义变量:变量=值
unset 删除变量
案例解析
A=100
输出 变量A
unset A 删除变量
再次输出变量A
案例2
静态变量用readonly 来申明
readonly A=99 #申明静态变量
echo "A=$A" #输出静态变量 静态变量不能unset
案例4
可以把变量提升为全局变量(环境变量) 来供shell使用
5 定义变量的规则
5.1变量名称可以由字母、数字和下划线组成,但是不能以数字开通。
5.2 等号两侧不能有空格
5.3变量名称一般习惯为大写
6.将命令的返回值给变量
6.1 A=$(ls -la) 运行里面的命令。并把结果返回给变量A
6.2 A=`ls -la` 反引号 是数字1边上的 esc 下面的那个
7.设置环境变量
基本语法
7.1.1 export 变量=变量值 (功能描述:将shell 变量输出为环境变量)
7.1.2 source 配置文件 (功能描述:让修改后的配置信息立即生效)
7.1.3echo $变量名 (功能描述:查询环境变量的值)
理解:
7.2 案例
在/etc/profile 文件中定义NGINX_HOME环境变量
查看环境变量NGINX_HOME的值
在另外一个shell中使用 NGINX_HOME
注意:在输出变量之前,必须要让其生效
sourc /etc/profile
8. 位置参数变量
在执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。
比如 :/myshell.sh 100 200 ,这个就是一个执行shell的命令行,可以再myshell脚本中获取参数信息。
基本语法
$n (功能描述:n为数字,$0 代表命令本身,#$1-$9代表第一到第九个参数,十以上的参数则需要用大括号包含 如$s{10})
$*(功能描述:这个变量代表命令行中的所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量代表命令行中的所有的参数 $@把所有的参数区别对待)
$#((功能描述:这个变量代表命令行中所有参数的个数)
9.预定义变量
9.1.1 基本结束
就是shell 设计者事先已经定义好的变量,可以直接在shell脚本中使用
9.2基本语法
$$ (功能描述:当前进程的号PID)
$!(功能描述:后台运行的最后一个进程的进程号PID)
$?(功能描述:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量非0 则证明上一个命令执行不正确。)
9.3 应用实例
在shell 脚本中简单使用一下预定义变量
10.流程控制
10.1 if判断
if [ 条件判断 ];then
程序
fi
或者
if [ 条件判断 ]
then
程序
elif [条件判断]
then
程序
fi
注意事项:[ 条件判断 ],中括号和条件判断之间必须要有空格 推荐使用第二种
案例:60分 nice 低于60分 strive
case 语句
基本语法
case $变量名 in
“值1“)
如果变量的值等于1,则执行程序1
;;
"值2")
如果变量2的值等于2,则执行程序2
……省略其他分支..
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
应用实例
..
如果变量的值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!