够用的 shell 脚本
shell 脚本随处可见,甚至有些项目就是由 shell 脚本组成的
如果你想使用 shell 脚本自动化执行流程,或者看懂 shell 脚本,需要哪些知识呢
这里简单讲几个点
0 shell 适用于什么情况?
- 小工具
- 包装脚本编译代码
- 调用其他高级语言(调度)
- 少量的数据处理
1 获得参数
1 | $ example_command 1 2 3 |
在执行命令后面加了三个参数
在程序中可以这样获取
1 2 3 4 5 6 7 8 | # 命令本身,即: example_command echo $0 # 1 echo $1 # 2 echo $2 # 3 echo $3 |
如果是一个 shell 函数要获取参数呢?
也是类似!
1 2 3 4 5 | function_call () { echo $1 } function_call "call function" |
2 如何模块化
借助 source 命令
1 2 3 4 5 6 7 8 9 10 11 | # a.sh function function_a() { echo 'a' <br> # 函数内部变量尽量使用 local 关键字,作用域能够限制在当前函数中<br> local b=1 } # b.sh source a.sh function_a |
3 提示是否继续
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | while true ; do read -r -p "Step $preStep done! Next Step is $nextStep. Are You Sure Continue? [Y/N] " input case $input in [yY][eE][sS] | [yY]) echo "Continue" break ;; [nN][oO] | [nN]) echo "opt exit, done." exit 1 ;; *) echo "Invalid input..." ;; esac done |
如果不想输入错误一直提示,可以去掉 while 循环
4 调试 shell 脚本
- 多加 echo ,输出有用信息
- 使用 set -x 命令
set -x 命令输出示例:
1 2 3 4 5 6 7 | # a.sh set -x a= 'aaaaaaaa' echo $@ echo "$@" echo $* echo "$*" |
5 计算
有几种方式可以在 shell 中计算
但是这里只说一种
那就是双括号的形式
1 2 3 4 | # a.sh # 双括号中不能使用 $n 表示变量 ((n = 10 / 3)) echo $n |
6 shell 判断
shell 的 test 提供了很多比较实用的比较方式
比如:
1 2 | -e: 文件存在 -f: 文件存在并且是普通文件 |
停,如果全列出来就没意思了,只能是授之以鱼
通过命令 man test 可以看到更详细的判断语法
本文来自博客园,作者:吴丹阳-V,转载请注明原文链接:https://www.cnblogs.com/wudanyang/p/13823722.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)