写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:
Hello, root, your shell: /bin/bash
3、统计一共有多少个用户

#!/bin/bash
FILE="/etc/passwd"
num=`wc -l < $FILE`
echo "User count:$num"
for i in `seq $num`;do
Username=`head -$i $FILE |tail - | cut -d: -f1`
Shell=`head -$i $FILE | tail - | cut -d: -f7`
echo "Hello,$Username,your shell: $Shell"
done

写一个脚本:
1、添加10个用户user1到user10,密码同用户名;统计这10个用户的ID号之和;

#!/bin/bash
for i in `seq `; do
useradd user$i
echo "user$i" | passwd --stdin user$i
userid=`grep "user$i" /etc/passwd | cut -d: -f3`
sumid=$[ $sumid + $userid ]
done
echo "ID COUNT:$sumid"

写一个脚本,分别显示当前系统上所有默认shell为bash的用户和默认shell为/sbin/nologin的用户,并统计各类shell下的用户总数。显示结果形如:
BASH,3users,they are:
root,redhat,gentoo

NOLOGIN, 2users, they are:
bin,ftp

#!/bin/bash
BASH_C=`grep '/bin/bash' /etc/passwd | wc -l`
NOLOGIN_C=`grep '/sbin/nologin' /etc/passwd | wc -l`
echo "BASH,$BASH_C'users',they are:"
for i in `seq $BASH_C`;do
BASH_N="$BASH_N`grep '/bin/bash' /etc/passwd | head -$i | tail -1 | cut -d: -f1`,"
done
echo $BASH_N | sed 's/,$//'
echo "NOLOGIN,$NOLOGIN_C'users',they are:"
for i in `seq $NOLOGIN_C`;do
NOLOGIN_N="$NOLOGIN_N`grep '/sbin/nologin' /etc/passwd | head -$i | tail -1 | cut -d: -f1`,"
done
echo $NOLOGIN_N | sed 's/,$//'

写一个脚本:
1) 显示一个菜单给用户:
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*) quit.
2) 当用户给定选项后显示相应的内容;
3) 当用户选择完成,显示相应信息后,不退出;而让用户再一次选择,再次显示相应内容;除了用户使用quit;

#!/bin/bash
#创建函数s
s(){
echo '---------------------------Options------------------------------'
echo 'd|D) show disk usages.'
echo 'm|M) show memory usages.'
echo 's|S) show swap usages.'
*) quit.
#输入一个选项参数S
read -p 'Please input your select:' S
}
#调用函数s
s
#创建一个while循环,只要是选项是dmsDMS,则进入case,若不是,则直接while循环结束
while [[ $S == [dmsDMS] || $S == 'quit' || $S == * ]];do
case $S in
[dD])
df -lh;
[mM])
free -m -l | grep -v '^Swap';;
[sS])
free -m -l | grep '^Swap';;
quit)
   exit;;
*)
echo '---------------------------Warning!------------------------------'
echo 'Please input your correct select,eg:[dDmMsS|quit]'
;;
esac
s
done

选项的使用

#!/bin/bash
help(){
echo "-m memory"
echo "-s swap"
echo "-d disk space"
echo "-q quit"
}
help
while getopts msdqh select
do
case $select in
m) free -m -l | grep -v '^Swap';;
s) free -m -l | grep '^Swap';;
d) df -lh;;
q) exit;;
h)help;;
*)
echo "Please select help options -h ";;
esac
done

shell脚本练习的更多相关文章

  1. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  2. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  3. shell脚本规划化模板

    shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...

  4. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  5. Linux Shell脚本逻辑操作符简介

    在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...

  6. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  7. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  8. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  9. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  10. shell 脚本之循环使用 for while 详解

    任何一种编程语言中循环是比不可少的,当然 shell 脚本也少不了循环语句,包括 for 语句. while 语句.文中主要以实际用例来说明 for while 都有哪些常见的使用方法和技巧. 一.f ...

随机推荐

  1. uva1587 Box

    Ivan works at a factory that produces heavy machinery. He has a simple job -- he knocks up wooden bo ...

  2. 用 C 语言编写 Windows 服务程序的五个步骤

    Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务.为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择.本文将建立并实现一个简单的服务程序,其功能是查询系统 ...

  3. Linux iostat监测IO状态(转)

    Linux iostat监测IO状态 2010-03-1  |  13:13分类:Linux,技术细节  |  标签:Linux  |  53,945 views Linux系统出现了性能问题,一般我 ...

  4. sql server数据建表

    use edudbgoif exists(select * from sysobjects where name='department')drop table departmentcreate ta ...

  5. hdu4453-Looploop(伸展树)

    题目有很多图,不好粘贴..... 题意:给出N个数和K1,K2的值,最开始指针指向第一个数,有6种操作 add x : 给前K2个数都增加x reverse : 翻转前K1个数 insert x : ...

  6. C++按值和按址传递对象的思考和优化

    C++是一门面向对象(OOP)编程语言,在这门语言中也有函数,函数的参数可以是变量数值,当然也可以是对象.所以,传统地就有关于对象是按值传递还是按址传递的讨论. 在C语言中,按值传递在很多情况下可以出 ...

  7. redis 的基本语法

    Redis::__construct构造函数 $redis = new Redis(); connect, open 链接redis服务 参数 host: string,服务地址 port: int, ...

  8. 由查找session IP 展开---函数、触发器、包

    由查找session IP 展开---函数.触发器.包 一.userenv函数.sys_context函数 --查看当前client会话的session IP信息 SQL>select sys_ ...

  9. dev grdicontrol 根据条件改变行颜色,字体颜色等

    dev grdicontrol 根据条件改变行背景   dev grdicontrol 根据条件改变字体颜色  dev grdicontrol 根据条件改变某个单元格背景 不用写代码  打开gridc ...

  10. POJ训练计划2777_Count Color(线段树/成段更新/区间染色)

    解题报告 题意: 对线段染色.询问线段区间的颜色种数. 思路: 本来直接在线段树上染色,lz标记颜色.每次查询的话訪问线段树,求出颜色种数.结果超时了,最坏的情况下,染色能够染到叶子节点. 换成存下区 ...