Bash Shell中的for循环和运算表达式应用

Bash Shell中的for循环和运算表达式应用

1、写一个脚本 实现以下功能: 接受一个以上文件路径作为参数, 显示每个文件拥有的行数,总结说明本次共为几个文件统计了其行数。
设定此脚本至少需要一个参数并给出提示,$#表示参数的个数。
将脚本提供的所有参数组成一个列表放入for语句依次进行循环执行echo "$i has $(wc -l $i | cut -d" " -f1) lines."$\*表示所有的参数。

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least on path." && exit 1 

for i in $*;do
    echo "$i has $(wc -l $i | cut -d" " -f1) lines."
done

echo "A total of $# files were counted."

2、写一个脚本:传递两个以上字符串当作用户名; 创建这些用户;且密码同用户名;总结说明共创建了几个用户。依然使用$#来判断参数个数,要求至少输入3个字符串作为用户名。然后将全部参数传递给for进行遍历,循环执行useraddpasswd指令完成用户创建,最后使用$#显示一共添加了多少个用户。

#!/bin/bash
#
[ $# -lt 2 ] && echo "At least gave there strings." && exit 1

for i in $*;do
    useradd $i
    echo $i | passwd --stdin $i
done

echo "$# users added."

3、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和。
使用for循环语句遍历1-20的列表,依次创建用户,然后使用for循环提取出每个用户的ID,然后作为计算表达式的参数进行算术运算。

#!/bin/bash
#
for i in {1..20};do
    for id in $(useradd visitor$i | id -u visitor$i);do
    let sum+=${id}
    done
done
echo "Sum:$sum."

4、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数。
写一个脚本可以根据给定的文件绝对路径,计算出每个文件中以#开头的行数和空白行数,然后求和,并显示出来。

#!/bin/bash
#
[ $# -eq 0 ] && echo "At lease give one absolute path." && exit 1

for i in $*;do
    for n in $(grep "^#" $i | wc -l);do
        let sum1+=$n
    done
done

echo "There are $sum1 lines that begins  with "#"."

for j in $*;do
    for m in $(grep "^$" $j | wc -l);do
        let sum2+=$m
    done
done
echo "There are $sum2 space lines."

Bash Shell中的for循环和运算表达式应用

以上为运行结果示例。

5、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和。

#!/bin/bash
#
grep "bash\>$" /etc/passwd | cut -d: -f1,3

for i in $(grep "bash\>$" /etc/passwd | cut -d: -f1,3 | cut -d: -f2);do
    let sum+=$i
done
echo "User ID Sum is:$sum."

以下为脚本执行结果:

[lantian@bogon ~]$ bash  useridsum.sh 
root:0
lantian:1000
centos:1002
bash:1003
testbash:1004
user2:1006
user3:1007
mageia:1100
openstack:3003
user4:3005
user5:3006
hadoop:3007
basher:3008
user1:3010
user10:3011
user11:3012
user12:3013
user13:3014
user14:3015
user15:3016
user16:3017
user17:3018
user18:3019
user19:3020
123456789:3021
usera:3022
userb:3023
userc:3024
user90:3025
user91:3026
user92:3027
visitor1:3028
visitor2:3029
visitor3:3030
visitor4:3031
visitor5:3032
visitor6:3033
visitor7:3034
visitor8:3035
visitor9:3036
visitor10:3037
visitor11:3038
visitor12:3039
visitor13:3040
visitor14:3041
visitor15:3042
visitor16:3043
visitor17:3044
visitor18:3045
visitor19:3046
visitor20:3047
User ID Sum is:137234.

6、写一个脚本,显示当前系统上所有拥有附加组的用户,并说明共有多少个此类用户。
使用id -G USERNAME统计其输入几个组ID的方式逐个判断用户是否有附加组,USERNAME的来源为/etc/passwd文件的第1列(cut)截取。具体脚本如下:

#!/bin/bash
#
for i in $(cat /etc/passwd | cut -d: -f1);do
    if [ $(id -G $i | wc -w) -gt 1 ];then
        echo $i
        let count++
    fi
done

echo "Total users:$count."

原创文章,作者:N24_lantian,如若转载,请注明出处:http://www.178linux.com/63508

(0)
N24_lantianN24_lantian
上一篇 2016-12-13
下一篇 2016-12-13

相关推荐

  • RAID特性详解,及RAID创建详细操作

    写在前面–命令总览:创建RAID:mdamd  -C [-l级别  -n盘数量  -cchunk  -a是否询问] 查看RAID: mdadm –D   停止RAID:mdadm –S  管理RAID:-f标记损坏  -r删除  -a添加 watch&nbs…

    Linux干货 2016-02-14
  • 海量数据处理算法—Bit-Map

    1. Bit Map算法简介         来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 2、 Bit Map的基本思想       &nbs…

    Linux干货 2015-11-10
  • LNMP

    1、源码编译安装LNMP架构环境 OS版本:2.6.32-431.el6.x86_64 Nginx版本:nginx-1.6.1 mariadb版本:mariadb-10.0.13 php版本:php-5.4.26 1、安装编译安装所需系统环境 ~]# yum groupinstall "Development Tools" "S…

    Linux干货 2017-02-09
  • 10分钟学会理解和解决MySQL乱码问题

    本文将详细介绍MySQL乱码的成因和具体的解决方案。在阅读本文之前,强烈建议对字符集编码概念还比较模糊的同学 阅读下博主之前对相关概念的一篇科普:十分钟搞清字符集和字符编码 MySQL出现乱码的原因 要了解为什么会出现乱码,我们就先要理解:从客户端发起请求,到MySQL存储数据,再到下次从表取回客户端的过程中,哪些环节会有编码/解码的行为。为了更好的解释这个…

    2015-03-17
  • sed命令及vim编辑器

    sed[option]… 'script' inputfile…选项:-n:不输出模式空间内容的自动打印-e: 多点编辑-f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本-r: 支持使用扩展正则表达式-i: 原处编辑script:'地址命令' 1.地址定界:(1) 不给地…

    Linux干货 2016-08-11
  • Linux文件系统管理

    一、什么是文件系统     我理解的文件系统就是管理磁盘分区上数据的索引信息,其实文件系统就是一种应用程序,只不过是用来维护和管理分区上的数据而已,就跟操作系统是用来管理底层硬件一样。不同的分区可以有不同的文件系统。 二、文件系统类型     在linux系统上主要有如下类型的文件系统: &nbsp…

    Linux干货 2016-03-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 00:44

    赞,几个脚本都写的比较好~~继续加油~