shell脚本练习

习题1:打印99乘法表

#!/bin/bash
#
for ((j=1;j<=9;j++))
do
    for ((i=1;i<=j;i++))
    do
        echo -e -n "${i}x${j}=$[${i}*${j}]\t"
    done
    echo
done

习题2:写一个脚本
(1)创建目录/tmp/dir-当前日期时间;例如/tmp/dir-20150707-155503。
(2)在此目录中创建10个空文件,分别为file1-file10;

#!/bin/bash
basedir=/tmp/dir-`date +%Y%m%d-%H%M%S`
mkdir -p $basedir
for d in {1..10}
do
    touch $basedir/file$d
done

习题3:写一个脚本
(1)创建用户tuser1-tuser9; 
(2)创建目录/tmp/dir-当前日期;
(3)在/tmp/dir-当前日期 目录中创建9个空文件file101-file109
(4)将file101的属主改为tuser1,依次类推,一直将file109的属主改为tuser9;

#!/bin/bash
basedir=/tmp/dir-`date +%Y%m%d`
mkdir -p $basedir
for d in {1..9} ;do
    filename=$basedir/file10$d
    touch $filename
    useradd tuser$d
    chown tuser$d $filename
done

习题4:写一个脚本,完成以下任务。
(1)添加5个用户,user1-user5,每个用户的密码同用户名
(2)添加密码完成后不显示passwd执行结果
(3)显示添加成功信息

#!/bin/bash
for i in `seq 5`
do
    username=user${i}
    useradd $username
    echo $username | passwd --stdin $username &> /dev/null
    echo "$username created successfully"
done

习题5:写一个脚本
(1)脚本可以接受一个以上的文件路径作为参数;
(2)显示每个文件所拥的行数;

#!/bin/bash
for file in $*
do
    lines=`wc -l $file | cut -d' ' -f1`
    echo "$file has $lines lines."
done

习题6:写一个脚本,不使用awk
显示/etc/passwd文件中位于文件的第偶数行的用户名;并显示共有多少个这样的用户

#!/bin/bash
totalUsers=`wc -l /etc/passwd | cut -d' ' -f1`
for i in `seq 2 2 $totalUsers`; do
    userName=`head -n $i /etc/passwd | tail -1 | cut -d: -f1`
    echo $userName
    echo $userName >> /tmp/count.tmp
done
echo "Total users: `wc -l /tmp/count.tmp | cut -d' ' -f1` ."

习题7:指定一个用户名,判断此用户的用户名和它的基本组的组名是否相同

#!/bin/bash
if [ $# -ne 1 ] ;then
    echo "agrs error"
    exit 3
fi

if ! id $1 &>/dev/null ;then
        echo "$1 Not Exsits"
        exit 4
fi

username=$1
groupname=`id $username -gn`
if [ "$username" == "$groupname" ]
then
    echo "Same."
else
    echo "Not same."
fi

习题8:判断当前主机的CPU生产商,(其信息保存在/proc/cpuinfo文件中)
如果是:AuthemticAMD,就显示其为AMD公司
如果是:GenuineIntel,就显示其为 Intel公司
否则,就显示其为其他公司。

#!/bin/bash
CPU=`egrep "^vendor_id" /proc/cpuinfo | tail -1 | cut -d: -f2`
if [ $CPU == 'GenuineIntel' ] ;then
    echo "Intel"
elif [ $CPU == 'AuthemticAMD' ] ;then
    echo "AMD"
else
    echo "Other"
fi

习题9:给定三个用户名,将这些用户的帐号信息提取出来,然后放入/tmp/test.txt文件中,并在行首给定行号。

#!/bin/bash
if [ $# -ne 3 ] ;then
    echo "agrs error"
    exit 3
fi
i=0
for user in $*
do
    let i++
    echo -e "$i\t`grep "^$user:" /etc/passwd`" >> /tmp/test.txt
done

习题10:依次向/etc/passwd中的每个用户问好:hello 用户名,并显示用户的shell
例如:Hello  ,root  ,your shell :/bin/bash。

#!/bin/bash
#
awk -F':' '{print "hello,",$1,"  your shell :",$7}' /etc/passwd

习题11:计算100以内所有能被3整除的整数的和

#!/bin/bash
#
SUM=0
for i in `seq 3 3 100`
do
    let SUM+=$i
done
echo "sum: $SUM"

习题12:查询当前192.168.1.x网段内,那些IP被使用了,输出这些IP到一个文件中。

#!/bin/bash
#
for i in {1..254}
do
    IP=192.168.1.$i
    if ping -w 1 -q $IP  ;then
        echo $IP >> /tmp/ips.txt
    fi
done

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

(0)
XIAJIDONGXIAJIDONG
上一篇 2017-05-22 20:50
下一篇 2017-05-22 21:29

相关推荐

  • 计划任务

    作业管理: Linux的作业控制(job )     前台作业:通过终端启动,且启动后一直占据终端;     后台作业:可通过终端启动,但启动后即转入后台运行(释放终端) 如何让作业运行于后台?     (1) 运行中的…

    Linux干货 2016-09-08
  • 软件包管理rpm和yum基本使用

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。 rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,…

    Linux干货 2016-08-29
  • 第三周n28

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d ” ” -f 1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 who | tail -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 cat /etc/passwd | …

    Linux干货 2017-12-17
  • 自制一个简易linux

    虚拟机添加一块新的硬盘(大小自定义) 在磁盘上创建一个基本分区作为/boot分区(大小200M足够) 再创建一个基本分区作为基本根分区(这里我指定给了5G大小) 然后给分区创建文件系统(注;swap分区要使用mkswap命令) ]# mkdir /mnt/boot 创建挂载点(因为grub只识别/boot目录,所以要创建boot目录) ]# mount /d…

    Linux干货 2016-09-21
  • Linux之sed的使用

    sed的工作原理         sed是一种流编辑器以行为单位来处理文本的一款功能十分强大的编辑器,一次只处理一行内容,当处理文本是,将要处理的行放置在模式空间里(缓冲区),接下来sed命令处理模式空间里的内容,处理完成后,把模式空间里处理后的内容送至屏幕打印输出,接下来处理下…

    Linux干货 2016-08-09
  • 强大的文本处理工具:vim编辑器

    一:引言 系统管理员的重要工作就是修改与设置某些软件的重要配置文件,而vim作为vi编辑器的升级版本,不仅能够以不同颜色来显示文字内容,还能够进行诸如shell脚本、C等程序的编写,所以,它还是一个程序编辑器,接下来,就让我们一起来看看vim的有哪些好玩的用法和特征。 二:vim三种模式及其常见用法 虽然vim有非常庞大甚至说它复杂也不为过的功能体系,但用结…

    2017-08-05