if-for-while
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 此时$@会把参数列表的内容分别作为元素
随机推荐
- JS基础_函数的参数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- weblogic 反序列化漏洞 getshell
上传cmd.jsp,效果: 上传马:
- SQL学习——SELECT INTO和INSERT INTO SELECT
原文链接 SELECT INTO 作用 SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中. SELECT INTO 语法 我们可以把所有的列都复制到新表中: SELECT ...
- paypal支付 NVP支付 paypal 手续费 GetTransactionDetails
主要内容: 本文章主要讲解的是NVP的对接,以最简单的接口案例,讲解一下对接NVP的方案. 先提供下paypal 官方文档的主要功能对接说明,如下 1.请求API 服务器端点 描述 https://a ...
- 【SpringBoot】整合日志框架
一.日志框架概述 1.1 日志框架的产生 1.2 市面上的日志框架 二.SLF4j 使用与整合 2.1 如何在系统中使用SLF4j 2.2 如何整合日志框架 2.3 SpringBoot中的日志关系 ...
- pytorch转onnx问题
Fail to export the model in PyTorch https://github.com/onnx/tutorials/blob/master/tutorials/PytorchA ...
- git回退到历史版本
问题描述 在开发的过程中,想要修改一个参数的命名.然后修改各种地方,并且push上码云的远程仓库.然后突然发现还要改很多地方,突然后悔不想改动了.那该怎么办呢? 处理步骤 回退本地的git版本 将本地 ...
- vi和vim的使用
本章内容: vi编辑器简介 vim基本使用 vim使用技巧 一.vim简介 vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版. 二.vim的基本使用 1.vim的工作模式 命令模式:是主要使用快键 ...
- 07_Redis_Sorted Set命令
一:Redis 有序集合(sorted set):有序set集合,专门用来做排行榜 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员 ------- (有序不重复) 不 ...
- Matlab---读取 .txt文件
Matlab读取 .txt文件 这里提供两种方法:1,load()函数.2,importdata()函数. ---------------------------------------------- ...