linux 学习基础7之脚本的练习
练习:
传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来。
写一个脚本:
#!/bin/bash
USER=$1
if [ ! $# -eq 1 ];then
echo "please input only one username "
exit 2
fi
if ! id $1 &> 1117.www.qixoo.qixoo.com/dev/null;then
echo "the user is not exist"
exit 3
fi
if [ `id -u $1` -eq `id -g $1` ];then
echo "same"
else
echo "different"
fi
判断当前主机的CPU生产商,其信息在qkxue.net/proc/cpuinfo文件中vendor id一行中。
如果其生产商为AuthenticAMD,就显示其为AMD公司;
如果其生产商为GenuineIntel,就显示其为Intel公司;
否则,就说其为非主流公司;
#!/bin/bash
CPUFAC=`sed -n ‘/^vendor_id/p‘ /proc/cpuinfo | cut -d‘ ‘ -f2`
if [ $CPUFAC == AuthenticAMD ];then
echo "AMD"
elif
[ $CPUFAC == GenuineIntel ];then
echo "Inter"
else
echo"other company"
fi
写一个脚本:
给脚本传递三个整数,判断其中的最大数和最小数,并显示出来。
#!/bin/bash
declare MAXNUM
declare MINNUM
if [ $# -ne 3 ];then
echo "please input three number"
exit 2
fi
if [ $1 -ge $2 ];then
MAXNUM=$1
MINNUM=$2
else
MAXNUM=$2
MINNUM=$1
fi
if [ $MAXNUM -ge $3 ];then
echo "the maxnum is $MAXNUM"
[ $1 -ge $2 ] && echo "is first number" || echo "is second number"
else
MAXNUM=$3
echo "the maxnum is $MAXNUM is third number"
fi
if [ $MINNUM -le $3 ];then
[ $1 -le $2 ]&& echo "the minnum is $1" || echo "the minnum is $2 "
[ $1 -le $2 ]&& echo "the minnum is first" || echo "the minnum is second"
else
echo "the minnum is $3 is third number "
fi
测试字符串
1 [ $A == $B ] 此时的==前后都要接空白符 不然默认会识别成赋值,
2 [ $A != $B ]
3测试字符串是否为空的单目运算符
-n string 空为真,不为空为真 为空时为假 且测试时 [空格变量空格] 这样的格式进行测试
4测试字符串不为空
-s 不为空为真 ,空为假
4测试字符串是否大于 小于 > < 来表示
for 循环的使用
for 变量 in 列表 ;do
命令行1;
命令行2;
done
1.1生成列表
1.1{1..100}
1.2 seq 起始数 步长 结束数
seq number 表示从1开始到number
seq number1 number2 表示步长为1 起始数为number1 结束数为number2
seq number1 number2 number3 1表示起始数 2表示步长 3表示结束数
1.3 ` ls /etc/`
数据类型的申明 declare
declare -i SUM=0 申明为整数!
declare -x 表示申明为环境变量
写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:
Hello, root, your shell: /bin/bash
3、统计一共有多少个用户
4、只向默认shell为bash的用户问声好
# cat /etc/passwd | cut -d: -f1,7 | head -1 | tail -1 | cut -d: -f2 | sed ‘s@/.*/@@‘
# cat /etc/passwd | cut -d: -f1,7 | head -1 | tail -1 | cut -d: -f1
#!/bin/bash
declare I
declare J=0
NUM=`cat /etc/passwd | wc -l `
for I in `seq $NUM` ;do
USER=`cat /etc/passwd | cut -d: -f1,7 | head -$I | tail -1 | cut -d: -f1`
USHELL=`cat /etc/passwd | cut -d: -f1,7 | head -$I | tail -1 | cut -d: -f2 | sed ‘s@/.*/@@‘`
# echo "HI $USER your shell is $USHELL"
if [ $USHELL == bash ];then
echo "hi $USER your shell is $USHELL"
let J=$J+1
fi
done
echo "the users total is $I the bash is $J"
exit
写一个脚本:
1、添加10个用户user1到user10,密码同用户名;但要求只有用户不存在的情况下才能添加;
扩展:
接受一个参数:
add: 添加用户user1..user10
del: 删除用户user1..user10
其它:退出
adminusers user1,user2,user3,hello,hi
!/bin/bash
if [ $1 == "add" ];then
for I in {1..10};do
if id user$I &> /dev/null;then
echo "user$I is exist"
else
useradd user$I
echo "user$1" | passwd --stdin user$I &> /dev/null
fi
done
elif [ $1 == "del" ];then
for I in {1..10};do
userdel -r user$I
done
else
echo "please input add or del "
exit 2;
fi
写一个脚本,分别显示当前系统上所有默认shell为bash的用户和默认shell为/sbin/nologin的用户,并统计各类shell下的用户总数。显示结果形如:
BASH,3users,they are:
root,redhat,gentoo
NOLOGIN, 2users, they are:
bin,ftp
#!/bin/bash
#
NUMBASH=`grep "bash$" /etc/passwd | wc -l`
BASHUSERS=`grep "bash$" /etc/passwd | cut -d: -f1`
BASHUSERS=`echo $BASHUSERS | sed ‘s@[[:space:]]@,@g‘`
echo "BASH, $NUMBASH users, they are:"
echo "$BASHUSERS
组合测试条件
-a: 与关系
-o: 或关系
!: 非关系
if [ $# -gt 1 -a $# -le 3 ]
if [ $# -gt 1 ] && [ $# -le 3 ]
linux 学习基础7之脚本的练习的更多相关文章
- Linux学习-->如何通过Shell脚本实现发送邮件通知功能?
1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...
- linux学习基础1
简介 包含计算机组成,发行.核心思想.主要目录,一些命令ifconfig.echo.tty.startx.export.pwd.history.shutdown.poweroff.reboot.hwc ...
- Linux学习笔记:Shell脚本学习
概念 真正能够控制计算机硬件(CPU.内存.显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁. 由于安全.复杂.繁琐等原因,用户不能直接接触内核(也没有 ...
- Linux学习——————基础篇
一.linux试用 1.使用man或者info查询 2.超级简单的文本编辑器:nano 3.sync:数据同步写入磁盘,将内存中的数据写入磁盘 3.惯用的关机命令:shutdown /sbin/shu ...
- linux学习基础6之sed用法详解
1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来.默认sed不编辑原文件只处理模式空间中的内容. 2 sed用法 sed [opti ...
- Linux学习总结《shell脚本》知识点关键-用好“过滤器”
- Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?
一.背景 Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器? http://blog.csdn.net/ouyang_peng/article/details/ ...
- linux的基本操作(shell 脚本的基础知识)
shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...
- 5.linux内核模块基础,内核模块学习
linux内核模块基础 一.定义 Linux 内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢: 方法 1:把所有的组件都编译进内核文件,即:zImage 或 bzImage,但这样会 ...
随机推荐
- ArcGIS支持MongoDB数据源
ArcGIS支持MongoDB数据源 自从NoSQL推出之后,MongoDB就作为比较杰出的代表受到广大用户的推崇,当然,与之而来的大数据的讨论也非常激烈,GIS数据源向来都是以海量来计算,所以,GI ...
- Linux C中结构体初始化
在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式.该方式是某些C教材(如谭二版.K&R二版)中没有介绍过的.这种方式称为指定初始化(designated in ...
- MVC———用自定义扩展类实现验证
废话少说,直接上图 →_→ NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12 NO.13 NO.14 NO.15 NO.16 ...
- javascript数组去重的4个方法
Array.prototype.unique1 = function(){//有局限性,1,“1”的情况会被去重,因为存入临时对象时,数组中的值被统一转换成了字符串 var obj = {},newA ...
- Vware Workstation pro 12|虚拟机
Vmware是比较不错的PC虚拟化软件,vmware11+不在支持32的系统安装!体积比之前小了很多 VMware 12 官方中文页面 http://vmware.com/cn/products/wo ...
- Android 拍照或者从相册获取图片的实现
我们常常会用到上传头像,或者发帖子的时候选择本地图片上传的功能.这个很常见 今天因为app的需求我研究了下.现在分享下. 其实不论是通过拍照还是从相册选取都会用到Intent 这是系统提供给我们用来调 ...
- 软件工程(QLGY2015)第三次作业点评(含成绩)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 团队信息 本页点评团队1-22,其他组见:http://www.cnblogs.com/xiaozhi_5638/p/4490764.h ...
- Fragment 与Activity之间的通信
1.Fragment-->Activity 在fragment中的onAttach()中引用Activity实现的接口实例. 2Activity-->Fragment 直接调用 3多个Fr ...
- jquery 获取Select option 选择的Text和Value
jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关设置 获取一组radio被选中项的值:var item = $(' ...
- 【POJ 1113】Wall
http://poj.org/problem?id=1113 夏令营讲课时的求凸包例题,据说是PKUSC2015的一道题 我WA两次错在四舍五入上了(=゚ω゚)ノ #include<cmath& ...