• shell脚本


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

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

    test文件如下:

    1 2 3
    3 4 5
    8 9 10
    3 4 8
    8 9 11
    13 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 < test
    12 echo $sum
    13 
    14 #这样就不行
    15 #sum=0
    16 #cat test | while read line
    17 #do
    18 #tmp=$(echo $line | cut -d ' ' -f 2)
    19 #let "sum+=$tmp"
    20 #echo $sum             这里的sum就是对的
    21 #done < test
    22 #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一样。

  • 相关阅读:
    python处理yml
    awk命令笔记
    微信小程序wxml的数据传给js 点击事件 js获取view中的内容
    微信小程序js 字符串截取
    微信小程序 wx:if 多条件判断
    微信小程序 --- toast消息提示框
    微信小程序 点击事件获取到的 event.currentTarget.dataset.id 是空的 解决办法
    微信小程序页面跳转传参数
    微信小程序开发框架
    微信小程序获取当前时间
  • 原文地址:https://www.cnblogs.com/zmlctt/p/4007417.html
Copyright © 2020-2023  润新知