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. JS基础_函数的参数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 调用打码平台api获取验证码 (C#版)

    一.打码平台很多,这里选择两个:联众和斐斐 联众开发文档: https://www.jsdati.com/docs/guide 斐斐开发文档: http://docs.fateadm.com/web/ ...

  3. 安装laravel-ide-helper

    前言 使用laravel作为PHP开发框架的朋友都知道,laravel提供的门面操作都对于PHPStorm的代码提示和方法跳转都不是很友好.然而没有关系,今天介绍一个组件帮助到我们.就是!就是!就是! ...

  4. 【Struts2】文件上传与下载

    一.上传 1.1 Struts2实现步骤 浏览器端 服务器端 1.2 关于Struts2中文件上传细节: 1.3 示例 jsp文件 Action类 struts.xml文件配置 二.下载 2.1 文件 ...

  5. 报错处理(UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 2: ill egal multibyte sequence)

    参照文[https://blog.csdn.net/Dillon2015/article/details/53204955]的说法, 第一个错 [UnicodeEncodeError:'gbk' co ...

  6. vue 之img的src是动态渲染时(即 :src=' ' )不显示 踩坑

    问题: <img :src="item.image ? `../../assets/image/${item.image}` : ''" alt="image&qu ...

  7. Istio调用链埋点原理剖析—是否真的“零修改”分享实录(下)

    调用链原理和场景 正如Service Mesh的诞生是为了解决大规模分布式服务访问的治理问题,调用链的出现也是为了对应于大规模的复杂的分布式系统运行中碰到的故障定位定界问题.大量的服务调用.跨进程.跨 ...

  8. 说说lock到底锁谁(I)?

    写在前面 最近一个月一直在弄文件传输组件,其中用到多线程的技术,但有的地方确实需要只能有一个线程来操作,如何才能保证只有一个线程呢?首先想到的就是锁的概念,最近在我们项目组中听的最多的也是锁谁,如何锁 ...

  9. Python&Selenium&pytest借助allure生成自动化测试报告

    一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...

  10. org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException

    org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener method ...