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

本文共 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

你可能感兴趣的文章
一秒 解决 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql 问题
查看>>
Android组件化最佳实践 ARetrofit原理
查看>>
舍弃浮躁, 50条重要的C++学习建议
查看>>
同步手绘板——将View的内容映射成Bitmap转图片导出
查看>>
【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!...
查看>>
微信小程序之wx.navigateback往回携带参数
查看>>
陌陌和请吃饭之类的应用,你要是能玩转,那就厉害了
查看>>
递归的运行机制简单理解
查看>>
汉字转阿斯克马值
查看>>
Java 栈与堆简介
查看>>
【supervisord】部署单进程服务的利器
查看>>
zabbix oracle监控插件orabbix部署安装
查看>>
python3 通过qq 服务器 发送邮件
查看>>
java 多线程踩过的坑
查看>>
部署Replica Sets及查看相关配置
查看>>
倒序显示数组(从右往左)
查看>>
文献综述二:UML技术在行业资源平台系统建模中的应用
查看>>
Swift 学习 用 swift 调用 oc
查看>>
第三章 Python 的容器: 列表、元组、字典与集合
查看>>
微信小程序开发 -- 点击右上角实现转发功能
查看>>