zoukankan      html  css  js  c++  java
  • 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一样。

  • 相关阅读:
    [翻译]关于堆和堆栈
    sql 字符+数值 混合排序 lcs
    证明DataReader分页的可行性 lcs
    谈谈我对小公司、大公司及个人成长的见解 lcs
    sina 通用js代码说明 lcs
    Linux系统下生成证书 https证书
    【转】51单片机外部中断的C51编程
    【转】如何建立个人网站
    【转】关于C51的中断编程[原创]
    【转】毫不费力:破解加密PDF文档就使用这两三招
  • 原文地址:https://www.cnblogs.com/zmlctt/p/4007417.html
Copyright © 2011-2022 走看看