for循环语法:for变量名in条件;do…;done案列1,算出1到10的数字相加等于多少并打印出过程[root@akuilinux01shell]#catfor1.sh#!/bin/bashsum=0foriin`seq110`dosum=$[$sum+$i]echo"$sum+$i"doneecho$sum[root@akuilinux01shell]#sh-xfor1.sh+sum=0++
[root@akuilinux01shellXT]#catenv.sh#!/bin/bash#使用变量替换定义若干个变量TIME=`date`NAME=`uname-n`KERNEL=`uname-s`VERSION=`uname-r`ARCH=`uname-m`OS=`uname-o`echoecho"========================================="echo"
把rm命令转换成mv命令,不能使用-r参数,会报出一个错误,因为mv命令没有-r参数,下面是方法:在用户主目录下创建一个隐藏文件夹~/.trash作为垃圾回收站[root@akuilinux01shellXT]#mkdir-p~/.trash写一个脚本```[root@akuilinux01tmp]#vim~/.bashrc#设置别名,rm是删除文件,rl是查看回收站,ur是恢复文件aliasrm
需求统计一个文本文件中各个单词出现的个数解决方案我们知道wc命令可以统计文本的行数,字数和字符数,但是它不能统计每一个单词出现的个数,因此我们需要自己构建一个脚本来实现这个功能。要想实现这个脚本,需要用到三个命令:tr,sort,uniq。具体代码如下【count_words.sh】```[root@akuilinux01shellXT]#vimcount_words.sh#!/bin/bash#
需求检查当前系统中的各种shell程序,统计出它们各被多少用户所使用,并把统计结果按照从多到少排序打印出来解决方案每个用户所使用登录的shell都保存在系统文件/etc/passwd中,我们已经知道这个文件中每一行对应一个用户的信息,并且最后一个字段就是这个用户所使用的shell程序。因此可以使用cut命令提取shell程序的字段,在通过sort命令进行合并,然后使用uniq命令统计各个shell
需求假如有两个文件name.txt和tel.txt,它们分别记录了员工的姓名和电话,如果需要把两个文件中的用户名和电话一一对应起来,怎么操作解决方案可以使用paste命令,它会把不同文件中的相同行连接起来[root@akuilinux01shellXT]#cat-nname.txt1曹操2刘备3孙权4周瑜5诸葛亮6司马懿7关羽8张飞9[root@akuilinux01shellXT]#cat-nt
需求从一个目录中取出最近访问过的5个普通文件,并且要求输出文件名和最后的访问时间解决方案通过ls-t和-u根据文件的访问时间进行排序,用|grep过滤出普通文件,在用head过滤出文件列表的前五行,最后用cut剪切无关的数据,只保留访问时间和文件名[root@iZ2ze7m4apicbnc8vvlx1cZproc]#ls-lut|grep"^-"|head-5|cut-c41-运行结果[root@
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号