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 此时$@会把参数列表的内容分别作为元素
随机推荐
- 【原创】大叔经验分享(77)openresty(nginx+lua)发http请求
openresty(nginx+lua)发http请求 利用location+proxy_pass间接实现 location ^~ /test/http { internal; proxy_pass ...
- 初学java2 认识面向对象 以及运算符 输入输出
面向对象 面向对象是一种程序设计思路,在设计一个程序时不需要考虑内部如何实现,只需要想他要实现什么功能 就像在餐馆点菜一样,你不需要知道他应该怎么做,你只需要决定你要吃什么 面向对象三大特征 继承 封 ...
- otool随笔测试
otool 工具 查看库/反编译等二进制信息 1 依赖库查询 otool -L Payload/XXX.app/XXX 2 查看该应用是否砸壳 otool -l Payload/XXX.app/XXX ...
- 命令行工具--LLDP
目录 命令行工具--LLDP 一.场景引入 二.什么是LLDP? 三.在CentOS上安装LLDP 四.命令详解 五.脚本 命令行工具--LLDP 一.场景引入 有的时候,我们需要知道服务器上联交换机 ...
- Pycharm中查看内置函数的源码
方法1.鼠标放在函数上,Ctrl+B,看源码 方法2.将光标移动至要查看的方法处,按住ctrl 键,点击鼠标左键,即可查看该方法的源码.
- 海康威视面试-java应用开发
一面:技术面 (1)对着简历问本科学过的java相关课程,都学了哪些东西.很懵逼,很早之前学的东西,我都记不清楚了 (2)网络编程相关知识,我也不太懂,就回答了网络协议这块的知识 (3)线程相关,线程 ...
- CF732F Tourist Reform[边双缩点]
题意:给无向图每一条边定向,使得每个点可达点数$R_i$最小值尽可能大,求方案. 条件反射想到二分答案,然后看怎么检验,发现要让所有点$R_i$大于等于某一个值,首先我们关注某些特殊的子图:如果有环的 ...
- remmina连接xfce桌面的centos7
vnc无法连到linux server,但ssh可以的解决方法 原文引自:https://blog.csdn.net/h00ahaha/article/details/84440449 今天用vn ...
- 使用Ajax中get请求发送Token时踩的那些坑
在使用惯了各种牛X的插件以后,在使用原生组件写一些小东西的时候总是有踩不完的坑! 今天就来说一说我使用原生ajax请求时踩得坑: 下面是我的代码: var xmlhttp; if (window.XM ...
- 将网页上指定的表单的数据导入到excel中
很多时候,我们想要将网页上显示的信息,导入到Excel中,但是很多时候无法下手.可是,这个时候,下面这个例子会帮你大忙了. 将html表单指定内容导出到EXCEL中. <!DOCTYPE HTM ...