1-shell基本语法
shell脚本开发规范
1、命名:
要有意义,后缀.sh
2、首行
是而且必须是命令解释器(#!/bin/bash)
3、注释
简单描述脚本信息
4、执行
bash 脚本名称
5、脚本内容
从上到下,依次执行。
6、其他
成对的符号,成对写,避免丢失
() {} [] ' ' " "
流程格式:
先写完,然后填空
缩进
仅仅是表示美观
案例:
创建一个简单的脚本
1 | vi a.sh |
代码如下:
1 2 3 | #!/bin/bash echo hi echo hello |
脚本的执行方式
方式一:
bash 脚本名称
1 | bash a.sh |
方式二:
文件的路径
文件一定要有执行权限
把权限修改成可执行的权限
1 2 3 | chmod + x a.sh . / a.sh |
方式三:
source 脚本名称
保证环境一致性,某个脚本在你自己的笔记本可以执行成功,但是在其他人机器上执行失败,原因就是:环境不一致
1 | source a.sh |
方式四:
注释的使用
单行注释 #
多行注释格式如下:
1 2 3 | :<<! 注释的内容 ! |
创建一个脚本,dir='pwd'中的dir作为一个变量使用
1 | vi a.sh |
脚本的代码如下:
1 2 3 4 5 6 7 8 9 | #!/bin/bash :<<! 脚本描述:测试命令行输入 作者:python 13 期 版本:v1. 0 联系方式:中南海 ! dir = `pwd` echo $ dir |
执行脚本
1 | bash . / a.sh |
注释的部分没有显示出来
基本语法
变量
变量:存储动态值的一个抽象概念
变量包括两部分:
变量名 不变的
变量值 变化的
常见的变量有
本地变量,只在本地有效
全局变量,在当前的系统下,所有的环境都有效
内置变量,bash中内置了很多变量,我们可以直接拿过来使用
本地变量:普通变量和命令变量
普通变量
方式一:
变量名=变量值 变量值必须是一个整体,中间么有特殊字符如(a=a a a)是错的
定义一个变量
1 | itcast = nihao |
输出变量
1 | echo $itcast |
方式二:
变量名='变量值' 我看到的内容,我就输出什么内容 (注音这是单引号)
定义一个变量
1 | itcast1 = 'nihao 666' |
输出这个变量
1 | echo $itcast1 |
方式三:
变量名="变量值" 如果变量值范围内,有可以解析的变量名A,那么首先解析变量名A,将A的结果和其他内容组合成一个整体,重新赋值给变量B (注音这是双引号)
输出一个已经存在的变量
1 | echo $itcast |
定义一个变量
注音这里的$itcast是一个变量,它的值如上所示
itcast4="nihao 666-$itcast"
输出这个变量
1 | echo $itcast4 |
方式四:
"${变量名}" 场景: 标准使用方式,
1 | echo "${itcast}" |
执行脚本
1 | echo "${itcast}" |
命令变量:把linux命令赋值给一个变量
变量名=`命令`
变量名=$(命令)
执行流程:
1、执行命令
2、将命令执行后的结果,赋值给新的变量名A
定义一个命名变量,注音这不是一个单引号,而是一个反引号,在数字1的左边
dir=`pwd`
输出这个变量
1 | echo $ dir |
相当于执行linux的pwd的命令
定义一个命令变量
1 | dir = $(pwd) |
执行命令变量
echo $dir
相当于pwd
变量的查看
第一种
$变量名 使用场景,私下里,在命令行/脚本中使用,图省事
1 | echo $ dir |
第二种
echo "$变量名"
1 | echo "$dir" |
第三种
${变量名} 使用场景 echo " dsa dsafsa dsafsa ${变量名} f " 双引号里面有变量的话,会先执行里面的变量,把结果在从新赋值
1 | echo "dsd dsd ${dir}" |
第四种
"${变量名}" 使用的场景,标准使用方式,
echo "${dir}"
全局变量
全局变量查看方式
env
set declare 会把变量的函数也给显示出来
1 | env |
自定义一个全局变量
方式一:
1、首先定义一个本地变量
2、使用export声明这个本地变量为全局变量
1 2 3 | itcast5 = qiang666 export itcast5 |
查看自定义的全局变量
env |grep itcast5
方式二:
定义本地变量的同时,使用export声明本地变量为全局变量
自定义一个全局变量
1 | export itcast6 = qiang666 |
查看自定义的全局变量
1 | env |grep itcast |
删除变量
格式:
unset 变量名
删除上面自定义的两个全局变量
1 2 3 | unset itcast5 unset itcast6 |
查看有没有删除成功
1 | env |grep itcast |
内置变量
查看内置变量
1 | man bash |
跟脚本文件有关系的变量
"$0" 显示当前脚本的名称
创建一个脚本
vi file1.sh
代码如下
1 2 3 4 | #!/bin/bash # 获取脚本的名称 echo "我脚本的名称是: file.sh" echo "我脚本的名称是:$0" |
执行脚本
bash file1.sh
使用场景获取当前脚本的使用方式
1 2 3 4 5 | #!/bin/bash # 获取脚本的名称 echo "我脚本的名称是: file.sh" echo "我脚本的名称是:$0" echo "当前脚本的使用方式是:bash $0" |
执行脚本
1 | bash file1.sh |
$# 获取当前脚本传入参数的数量
创建一个脚本
1 | vi num.sh |
脚本代码如下
1 2 3 | #!/bin/bash # 获取当前脚本传入的参数数量 echo "当前脚本传入的参数数量是: $#" |
执行脚本,传递多个参数
1 | bash num.sh dsd dasd |
$n 获取当前脚本传入的第n个位置的参数
创建一个脚本
1 | vi weizhi.sh |
脚本代码如下:
1 2 3 4 5 6 | #!/bin/bash # 获取指定位置的参数 echo "第一个位置的参数是: $1" echo "第二个位置的参数是: $2" echo "第三个位置的参数是: $3" echo "第四个位置的参数是: $4" |
执行脚本
1 | bash weizhi.sh sds dsd fgr yty5 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理