if

help if可以看看if的用法

if ls -l / ;then echo "ok";else echo "no" ;fi

for

for ((i=0;i<10;i++));do echo $i; done

help for里面的words:asd asd asd,word:asd

for i in aaa fff ssss aaaa;do echo $i;done

命令seq,比如seq 33:从1输出到33

for i in `seq 33`;do echo $i;done

while

help while

练习

先统计一下,并用数值法并倒过来排个序:du -a | sort -nr

思想:把统计结果逆序排列,然后开始循环,把第一个是文件的输出即可。

编程:

oldIFS=¥IFS:bash是通过IFS里面的值来进行切割的,之前存的是空格,换行,制表符,这次要换成换行符,不过先保存现场。

IFS=$'\n':加单引号是为了使得\和n合为一体,$表示取它的值

接着``里面是按照逆序r排列的,对用户输入的路径的所有文件和目录的大小信息的数据集,增强for循环遍历里面的每一个元素。

for i in `du -a $1 | sort -nr`; do

  echo $1

  filename=`echo i | awk '{print $2}'` : 利用echo将内容输到awk的输入流,awk对传进来的树数据做切割,打印第二列,最后赋值给filename

  test里面的-f可以检查是否为文件,可以help test

  if [ -f $filename ] ;then

    echo $filename

    exit 0 :找到最大的文件后就打印并退出小bash

  fi

done

IFS=$oldIFS :恢复现场

练习

读一个文件的每一行,并打印,最后打印总共多少行。

脚本:

答案1:

name=0

oldIFS=$IFS

IFS=$‘n‘ 此处为单引号

for i in `cat read.txt`;do 此处为反引号,告诉它是命令

  echo i

  ((num++))

done

echo num:$num

IFS=$oldIFS

答案2:

num=0

lines=`cat data | wc -l`  : 拿到行数,且不显示文件名

for ((i=0;i<ilnes;i++));do

  line=`head -$i data | tail -1` :先输出前i行,然后取其中的倒数后一行,给变量line(tail是取倒数后几行的)

  echo line

  ((num++))

done

echo num:$num

答案3:

num=0

先执行一次done后面的,把data文件里的数据放到read的输入流里面,然后read一次循环一次

while read line ;do

  echo $line

  ((num++))

done < data

echo num:$num

答案4:

export num=0

cat data | (while read line ;do 此处将cat的结果放到输入流里面,注意此处管道创建了2个进程,()又创建了1个子进程,若不加小括号,则done;后面的实际上已经返回父进程了

  echo $line

  ((num++))

  done; echo num:$num )

答案5:

export num=0

cat data | {while read line ;do

  echo $line

  ((num++))

  done; echo num:$num ;} 此处换成大括号了,且末尾得有;,这次总共只创建了2个进程了

$#和$@区别

echo $# == echo $@

for i in "$*";do 此时$*会把参数列表作为1个元素

for i in "$@";do 此时$@会把参数列表的内容分别作为元素

随机推荐

  1. 【QT 学习笔记】 一、 VS2015+ QT环境安装

    1.   安装    qt-opensource-windows-x86-msvc2015_64-5.6.0.exe   (根据自己的VS版本来安装) 下载地址 http://download.qt. ...

  2. Asp .Net Core 2.0 登录授权以及前后台多用户登录

    用户登录是一个非常常见的应用场景 .net core 2.0 的登录方式发生了点变化,应该是属于是良性的变化,变得更方便,更容易扩展. 配置 打开项目中的Startup.cs文件,找到Configur ...

  3. HTML5学习:表格

    HTML代码 <table> <thead> <tr> <th>标题1</th> <th>标题2</th> < ...

  4. python主要模块 和 常用方法简览

    ******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename ...

  5. 2. An Array of Sequences

    1. Overview of Built-In Sequences Container sequences: list, tuple, and collections.deque can hold i ...

  6. 一个 TCP 连接可以发多少个 HTTP 请求?

    曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式. ...

  7. C# LINQ(10)

    LINQ 查询 var query = from r in Formula1.GetChampions() where r.Country == "Brazil" orderby ...

  8. [唐胡璐]Selenium技巧- ReportNG替换TestNG默认结果报告

    TestNG默认的报告虽然内容挺全,但是展现效果却不太理想,不易阅读。因此我们想利用ReportNG来替代TestNG默认的report。 什么是ReportNG呢?这里不多说,请直接参见:http: ...

  9. ZOJ4019——贪心&&DP

    题目 链接 大意:有一个容量为$c$的背包,有$n$个$s_1$类物体,价值都为$k_1$,体积分别为$s_{1,1}, s_{1,2}, \cdots, s_{1,n}$,有$m$个$s_2$类物体 ...

  10. oracle汉字排序

    oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式:        1.使用拼音排序   NLS_SORT=SC ...