linux shell 基础语法B
admin
2023-03-10 14:21:54
0

接着之前的内容继续讲shell编程的基础。
这部分还是先要巩固重定向的使用,以及创建自己的文件描述符,在编写shell脚本中关注临时重定向和永久重定向的用法。
(1)< <<
(2)> >>
为了区分如上的重定向符号,大家搞懂以下2个例子就行:
cat > file <cat >> fileA 实际使用中输入重定向还是比较少,多数是输出重定向
&> 表示stdout和stderr都重定向
对于文件描述符,我们不光要掌握0,1,2,还要能够自己创建自己的文件描述符,且在shell编程中与默认的标准文件描述符进行组合使用。比如说要恢复文件描述符就是一个例子。
exec 3 >&1
exec 1> testfile
...
...
exec 1>&3
...
...
以上是输出重定向的恢复,输入重定向如下
exec 6 <&0
exec 0 ...
exec 0 <&6
关闭文件描述符
exec 3 >&-
还有一种<>读写文件描述符的,慎用,最好是读完后再重定向写入,不然shell维护的内部指针会把文件内容搞得很混乱。
创建临时文件和目录
mktemp file.XXXXXX
mktemp -t 创建在/tmp下面且返回绝对路径
mktemp -d创建目录
tee的使用
tee -a

重定向讲完,再讲讲脚本的控制。脚本的控制主要是信号的处理。
用kill -l就可以看到linux支持的信号。这些信号是一类“软中断信号”,信号分为硬中断信号和软中断信号,在中断处理的上半部分由硬中断执行,下半部分一般都是交给软中断执行。linux中的kill方式就是用户态下进程间异步信号通信的一种方法。按照不同的角度,还可以把信号分为实时和非实时,可靠和非可靠。
大部分信号都是会去停止,终止进程,但是还是有细微差异,比如信号是否可以捕获,是否可以忽略等等,信号的默认动作也是不一样的,有些会触发dump core。
基本掌握 ctrl+c ctrl+z 对应的信号
捕获信号使用trap “:” SIGINT
放弃捕获 trap --SIGINT
可以使用trap实现简单的跳板机程序
脚本还可以在后台执行 bash xx.sh &
如果希望终端退出不影响脚本的执行使用nohup
执行脚本就会产生进程,进程是需要占用内存和cpu资源的。一般通过nice renice来调整谦让度-20~19,值越低cpu需求越高。也可以用cpulimit和cgroup来实现进程的资源管理。cgroup可以对一组进程进行管理限制,且不限于cpu,memory,blkio也行。
定时脚本也是脚本控制的一个内容,at命令可以完成简单的需求。更多的还是使用crontab文件或者crontab命令来实现,anacron也需要了解一下。

函数是基础语法的最后一部分。
结构:
function xxx()
{

}
xxx()
{

}
在shell中变量默认都是全局的,如果要局部使用请加local
数组类等复杂变量无法直接传递,可以拆分后再组合来实现效果。
注意函数位置变量和脚本位置变量的关系,别混淆。
shell函数也能实现递归等操作。
shell定义函数也有单行的表示方式。
shell编写脚本后,可以把一些公共的标准函数放到一个shell文件中,后续在别的脚本中直接以库的形式引用,source和点操作符.来实现。

相关内容

热门资讯

邮轮疫情悄然来袭 汉坦病毒溯源... 参考消息网5月8日报道美国《科学新闻》双周刊网站5月5日刊登题为《关于海上暴发的罕见汉坦病毒疫情,需...
打破“一边欢迎批评,一边屏蔽评... 澎湃首席评论员 与归因为母亲节宣传文案引起争议,5月8日下午,OPPO官方微博发文道歉,表示“已第一...
盘点闺蜜机哪个牌子耐用,适合闺... 闺蜜机哪个牌子耐用适合闺蜜同用?高性价比之选认准深圳市翰视科技有限公司 闺蜜机凭借可移动、大尺寸、...
“本源悟空-180”来了 我国... 记者今天(9日)从安徽省量子计算芯片重点实验室获悉,搭载单核180个计算比特自主超导量子芯片的“本源...
机械振动故障诊断实践总结 通常,振动频率用于确定机器中故障的位置。 故障诊断主要在频谱中进行;然而,时间波形、轴心轨迹和相位分...
比亚迪、特斯拉、小鹏、理想、蔚... 作者 | 黄琳 肖逸思 葛慧 武子晔近日,有市场消息称,车企锁电引起大范围投诉事宜引起监管重视,8家...
伊朗称美军打击伊朗6艘民用船 新华社德黑兰5月9日电 据伊朗迈赫尔通讯社9日报道,伊朗伦格港地方官员法瓦德·穆拉德扎德表示,8日晚...
浙江人形与杰克科技签约2000... 来源:上海证券报·中国证券网 上证报中国证券网讯(记者 王子霖)据浙江人形机器人创新中心有限公司(以...
原创 三... 不出意外的话,今年苹果,高通、三星,联发科,这4家确定会推出2nm的手机芯片。 并且高通、联发科、苹...
Kimi、阶跃再获百亿融资,D... 图片由AI生成 出品 | 搜狐科技 作者 | 梁昌均 编辑 | 杨锦 中国大模型创业公司再次迎来融资...