博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本
阅读量:6123 次
发布时间:2019-06-21

本文共 1093 字,大约阅读时间需要 3 分钟。

面试时我说了解shell脚本,好吧,直接让我写一个shell脚本,可是我都是在网上查着用的,所以直接写根本不会啊,果断挂了,以后学习最好就要本书系统的学习,不能只从网上找,用到啥学啥是不行的,要有个体系和系统才行。

让我用shell实现从一个文件中的第二行的数求和,其实道理很简单,但是回来实现下发现还是有很多问题。总结代码如下:

test文件如下:

1 2 33 4 58 9 103 4 88 9 1113 11 14

第二行求和实现代码:

1 #!/bin/bash 2 sum=0 3 while read line 4 do 5 tmp=$(echo $line | cut -d ' ' -f 2) 6 #let sum+=$tmp   # let "sum+=$tmp" #也可以,有没有引号都行,这里写了几种加法 7 #((sum=sum+$tmp)) 8 #sum=$(($sum+$tmp))              #可以不空格 9 #sum=$[$sum+$tmp]10 sum=`expr $sum + $tmp`     #这里必须隔着空格11 done < test12 echo $sum13 14 #这样就不行15 #sum=016 #cat test | while read line17 #do18 #tmp=$(echo $line | cut -d ' ' -f 2)19 #let "sum+=$tmp"20 #echo $sum             这里的sum就是对的21 #done < test22 #echo $sum             这里sum就是错的还是零,因为用管道又起了新进程,就改变的是子进程的sum不是父进程的,所以还是0.这就必须了解一下管道,详见博客linux学习中管道与重定向。

shell按行读取文件:

1 #!/bin/sh

cat FILENAME  |while  read LINE
do
    echo  "$LINE"
done
exit  0

 

一次读取一行,但是最前面的空格会被忽略。

 

2 #!/bin/sh

for  LINE in  ` cat FILENAME `
do
    echo  $LINE
done
exit  0

 

这个并不一定是一次读取一行,而是按照空格为分隔符。

 

3 !/bin/sh

while  read LINE
do
      echo  $LINE   
done  FILENAME

和1一样。

 

转载于:https://www.cnblogs.com/zmlctt/p/4007417.html

你可能感兴趣的文章
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>