完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
2016-10-25 1. shell编程的基本语法:变量,条件判断,特殊符号 正则表达式 Sed:文本处理器P38 Awk:流编辑器 目标:基本的shell脚本能自己写,能看懂makefile 2. shell ---》linux命令统称为shell命令,所谓的shell编程就是通过使用特定的语法规则和特殊的符号将你以前所学的shell指令组合在一起 特点:(1)不需要编译,直接运行(解释型的编程语言) (1)shell脚本程序的第一行都是#!/bin/bash ---》使用/bin/bash作为shell命令解释器 (2)shell变量:普通变量,环境变量,命令行变量 普通变量:name=”petter” (最好加””号否则若有两个单词只把第一个单词赋值给变量,第二个单词会被当做变量),char name[] = ”petter”; 等于号左右不允许多敲空格,变量默认为字符变量,若想为数值的变量:declare -i 变量; 普通变量需要用$解析它才能使用 环境变量:PATH PWD 通过env命令去查看系统中所有的环境变量 命令行变量: ./main ./dir1 ./dir2 argc 3 argv[0] ./env.sh abc jjj $# 命令行参数个数 2 $0 ./env.sh $n n表示命令行中的第n个参数 $? 上一条shell命令的执行结果 $* 命令行中所有的参数 $@ 命令行中所有的参数 $$ 当前进程的id 思考: 写一个脚本程序,自动在家目录中创建好 1025的文件夹,并且要求文件夹的权限是777,文件夹里面还要有一个新建的普通文件abc.c #!/bin/bash echo “`mkdir /home/1025`” #注意``为反引号不是单引号 echo “`vim abc.c`” #echo “`touch abc.c`” echo “’chmod 777 /home/1025’” (3)shell编程中的特殊符号 * ---》通配符,一个或者多个字符 双引号 “ ” 里面的内容可以取变量的值,也可以嵌套命令` ls ` 单引号 ‘ ’ 里面的内容当做字符串来处理,使用$或者反引号都没有用 反引号 ` ` 取命令 管道 | 用法一: 前面的输出作为后面命令的输入 ls | wc 用法二:前面的输出作为后面命令的参数 find . -name a.c | xargs grep “abc” -Hwn find . -name a.c grep “abc” a.c -rHnw [0-9] 0到9这些数字中的某一个 [a-z] find . -name “a*” 查找当前路径下所有a开头的文件 find . -name “ab[a-z]10” [^a-z] 除去a到z之外的任意一个字符 > < 重定向 问题点:echo 0< 2.doc 有问题 echo `0< 2.doc` 正确 wc 0< 1.txt 统计1.txt中字符的个数 求字符串中的字符个数${#变量的名字} # ----》不贪婪匹配 从左往右 ## ---》贪婪匹配 % ----》不贪婪匹配 从右往左 %%---》贪婪匹配 贪婪的含义是尽可能多的去匹配(配合*去匹配) (4)条件判断 if for case test 一:test 后面可以添加很多的测试条件,都是英文 语法格式 test -选项 文件 二:if条件判断(重点区分跟c语言写法的区别) c语言中: if() { } if() { } else { } if(){} else if() else{} shell编程: 写法一: if [ 不写test ] 如果不使用方括号,需要写test then 执行的语句 else 另外的语句 fi 结束的标记 写法二: if [ ] elif [ ] 后面都要有then else fi 注意:if[ a -eq b ]的a b两端与[]有空格 不要关心它的返回值0或1 若a与b相等就为真,用$?可以使用到其返回值。 练习:从键盘输入两个数字,去比较大小 echo --->输出变量 read --->获取键盘输入的字符 使用注意事项:(1)容易遗忘then (2)容易忘记[]左右两边的空格 (3)容易遗忘最后结束fi (5)循环 for while util for((i=1;i<=5;i++)) for a in ` seq 0 100` for 变量 in do 执行的命令 done (6)shell中的运算 expr + - * / % 注意:这些运算符两边都要有空格 (“=”两边不需空格且右边变量不需加$) `expr $a + $b` 计算a+b的值 `expr $(($a + $b)) * $c` `expr ( $a + $b ) * $c` 补充:/dev/null是回收垃圾的地方 遇到没见过的指令 ---》指令 (6)选择条件分支 case 变量 in 1) 执行 ;; 2) 执行 ;; esac (7)函数,重复的代码功能定义成函数 定义 函数名(){ 具体的代码 } 一个封装的函数里面用$1 $2 ........$n 分别代表传入这个函数的第几个参数,函数括号里从左到右。 =========正则表达式=========== 1. 名字很文艺,其实本质上正则表达式是人为规定的一系列具有特殊含义的字符(用来替代字符) 2. 使用正则表达式特殊符号的含义弄懂,有些符号需要转义(花括号,?) 并不是所有的shell命令都支持正则表达式 =============sed (stream editor)支持正则表达式=== 1.专业处理字符串:查找,替换,删除 sed "(^.*)tis.*from (.*)./1t:2" people.txt (^.*) ----->1 (.*) ----->2 >>>>>>>>>>>>后续待完善 ======awk支持正则表达式====== 1.处理那种一列列的格式规范的文件 >>>>>>>>>>>后续待完善 评分 |
|
相关推荐
3个回答
|
|
我很期待你接下来的分享~
|
|
|
|
|
|
|
|
写的挺简练
|
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4868 浏览 0 评论
87358 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4680 浏览 2 评论
3567 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2453 浏览 0 评论
1951浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1319浏览 1评论
1230浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1295浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1212浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 22:33 , Processed in 0.996757 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号