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. 【原创】编程基础之Jekins

    Jenkins 2.164.2 官方:https://jenkins.io 一 简介 Build great things at any scale The leading open source a ...

  2. css height属性中的calc方法

    例如父盒子是100%的高度 盒子里面的head部分固定位140px 内容部分始终为剩余的全部高度 height: calc(100% - 140px); 切结"+或-"两边要有空格 ...

  3. Java检查异常和非检查异常,运行时异常和非运行时异常的区别

    通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions).其中根据Exception异常 ...

  4. 文件 file open函数的打开及 函数的调用

    文件 mode 模式字符的含义 字符 含义 'r' 以只读方式打开(默认) 'w' 以只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开) 'x' 创建一个新文件, 并以写模 ...

  5. Image Processing and Computer Vision_Review:A survey of recent advances in visual feature detection—2014.08

    翻译 一项关于视觉特征检测的最新进展概述——http://tongtianta.site/paper/56761 摘要 -特征检测是计算机视觉和图像处理中的基础和重要问题.这是一个低级处理步骤,它是基 ...

  6. Vmvare 虚拟机固定IP

    首先我们打开虚拟机的虚拟网络编辑器,打开vmvare菜单栏的编辑,选择虚拟网络编辑器.   在打开的网络虚拟器中,会看到相关信息,虚拟机网络类型采用的NAT模式,子网地址是192.168.89.0,虚 ...

  7. Git修改已经提交的用户名信息

    由于工作或者其他原因,有时候我们会修改git的用户名和邮箱账号,没有改过来就提交,就会导致提交人信息不一致的问题.现在记录修正回来的方法 # 第一步,(n)代表提交次数 git rebase -i H ...

  8. TensorFlow指定GPU/CPU进行训练和输出devices信息

    TensorFlow指定GPU/CPU进行训练和输出devices信息 1.在tensorflow代码中指定GPU/CPU进行训练 with tf.device('/gpu:0'): .... wit ...

  9. PAT Advanced 1152 Google Recruitment (20 分)

    In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the p ...

  10. Ubuntu系统---FeiQ安装记录

    Ubuntu系统---FeiQ安装记录 linux下安装飞秋/飞鸽传书之类的软件iptux信使,可以与windows在一个局域网下聊天与传书文件,安装很简单. 首先,直接运行下面的语句即可:sudo ...