Shell 学习笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #表示该脚本以bash方式运行 1. #!/bin/bash #接受输入并将值赋给变量 2. read 变量名 #使用变量 3. ${变量名} #此变量只读 4. readonly 变量名 #删除此变量, 不能删除只读变量 5. unset 变量名 #表示当前shell的pid 6. $$ #(Ess下方键) 命令替换, 将执行结果保存 7. var=` command ` #计算 8. var=` expr 2+2` #注释 9. # |
1 2 3 4 5 6 7 | 10. 字符串 a. 'string' #单引号的字符串会原样输出,且里面的变量无效,且单引号内不能再出现单引号,转义也不行 b. "string" #双引号字的符串,可以有变量,可以有转义符 c. greeting #连接字符串 d. ${ #string} #获取字符中长度 e. ${string:1}/${string1:2} #截取字符串 f. ` expr index ${string} str` #查找字符串 str,返回索引 |
1 2 3 4 5 6 7 | 11. 数组 a. 用 "( )" 定义, 用 "空格" 符号来分隔元素 b. array[0]= "a" #定义指定下标的值, 下标可以不连续, 下标没有上限 c. ${array[0]} #获取指定下标的值 d. ${array[*]}/${array[@]} #获取数组所有元素 e. ${ #array[*]}/${#array[@]} #获取数组长度 d. ${ #array[n]} #获取数组指定下标的元素的长度 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 12. if ... else a. if [ express ] #1. [ 两边必须有空格 ], 等价于 if test express then command fi then #2. [ $a = $b] ,判断符之间也必须有空格 command if b. if [ express ] then command1 else command2 fi c. if [ express ] then command1 elif then command2 else command3 fi |
1 2 3 4 5 6 7 8 9 10 11 12 | 13 . case in case express in #表达式可以是变量或常量, 后面跟 in 关键字 match1) #匹配值后跟 ) command1 #匹配成功后执行命令 ;; #跳出, 相当于 break macth2) command2 ;; *) #默认匹配值, 相当于 default command5 ;; esac #结束符 |
1 2 3 4 5 | 14 . for for var in exp1 exp2 exp3 #表达式用 " " (空格)分隔 do command done |
1 2 3 4 5 | 15 . while whil [ express ] #表达式为 true 继续执行 do command done |
1 2 3 4 5 | 16 . until unitl [ express ] #表达式为 false 继续执行 do command done |
1 | 17 . break / continue #跳出 或 继续, 后面都可以跟一个整数, 表示到第几层循环 |
1 2 3 4 5 6 | 18 . 函数 a. function func_name(){ #定义函数, function可省略 command } #只能返回整数数字, 如果没有指定返回值, 会将最后一条命令执行结果返回 b. func_name #调用函数, 不需要加 ( ) , 函数要在调用前定义 c. $ 1 ... $ 9 ${ 10 } #取参数, 参数个数超过 10 后需要加 { } |
1 2 3 | 19 . 输入/出重定向 a. < 输入重定向 b. > 输出重定向 |
1 2 3 | 20 . 引用其它文件 a. . fileName b. source fileName |
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/code-boy/欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
分类:
Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
· 为什么构造函数需要尽可能的简单
· Google发布A2A开源协议:“MCP+A2A”成未来标配?
· C# 多项目打包时如何将项目引用转为包依赖
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
· 如果单表数据量大,只能考虑分库分表吗?
· 在Winform开发框架支持多种数据库基础上,增加对国产数据库人大金仓的支持