练习:

传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来。

写一个脚本:

#!/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之脚本的练习的更多相关文章

  1. Linux学习-->如何通过Shell脚本实现发送邮件通知功能?

    1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...

  2. linux学习基础1

    简介 包含计算机组成,发行.核心思想.主要目录,一些命令ifconfig.echo.tty.startx.export.pwd.history.shutdown.poweroff.reboot.hwc ...

  3. Linux学习笔记:Shell脚本学习

    概念 真正能够控制计算机硬件(CPU.内存.显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁. 由于安全.复杂.繁琐等原因,用户不能直接接触内核(也没有 ...

  4. Linux学习——————基础篇

    一.linux试用 1.使用man或者info查询 2.超级简单的文本编辑器:nano 3.sync:数据同步写入磁盘,将内存中的数据写入磁盘 3.惯用的关机命令:shutdown /sbin/shu ...

  5. linux学习基础6之sed用法详解

    1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来.默认sed不编辑原文件只处理模式空间中的内容. 2 sed用法 sed [opti ...

  6. Linux学习总结《shell脚本》知识点关键-用好“过滤器”

  7. Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?

    一.背景 Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器? http://blog.csdn.net/ouyang_peng/article/details/ ...

  8. linux的基本操作(shell 脚本的基础知识)

    shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...

  9. 5.linux内核模块基础,内核模块学习

    linux内核模块基础 一.定义 Linux 内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢: 方法 1:把所有的组件都编译进内核文件,即:zImage 或 bzImage,但这样会 ...

随机推荐

  1. 从大公司做.NET 开发跳槽后来到小公司的做.NET移动端微信开发的个人感慨

    从14年11月的实习到正式的工作的工作我在上一家公司工作一年多了.然而到16年5月20跳槽后自己已经好久都没有在写博客了,在加上回学校毕业答辩3天以及拿档案中途耽搁了几天的时间,跳槽后虽然每天都在不停 ...

  2. python基础-PyCharm设置作者信息模板_修改解释器_设置软件UTF-8编码

    一.PyCharm 设置作者信息模板 1.File---Settings---在搜索框中搜索:File and Code Templates---Python scripts #!/usr/bin/e ...

  3. extjs5 常用属性的说明

    uses -- 被引用的类可以在该类之后才加载. requires -- 被引用的类必须在该类之前加载. alias : 相当于别名一样,可以起多个,可以通过xtype创建实例,我现在接触的有三种类型 ...

  4. 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);

    数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...

  5. iOS开发,应用间的跳转

    预习:URL由两部分组成-- 1.scheme:协议头(http://  ftp:// 等等) 2.path:路径(URL中path可以没有) 一.简单实现跳转到指定APP(也就是说跳转到的APP必须 ...

  6. splay HYSBZ1588

    n天 n个营业额; sum(min(abs(wi-前面))); splay维护一下就可以 #include<stdio.h> #include<algorithm> #incl ...

  7. Mysql-ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    方法一:1.关闭mysql   # service mysqld stop2.屏蔽权限   # mysqld_safe --skip-grant-table   屏幕出现: Starting demo ...

  8. 一起学HTML基础-JavaScritp简介与语法

    简介: 1.什么是JavaScript? 它是个脚本语言,作用是使 HTML 页面具有更强的动态和交互性,它需要有宿主文件,它的宿主文件就是html文件.  JavaScript 是 Web 的编程语 ...

  9. 6 this的使用方法

    class Person { String name; void talk() { System.out.println("my name is "+this.name); } } ...

  10. dede使用方法---用js让当前导航高亮显示

    当前导航高亮显示能够提升用户体验,我也知道,大家在网上搜dede让当前导航高亮显示的方法一抓一大把,但是,并不一定适合自己的需求.就像我的需求一样,导航有个二级导航,然后需要做到让当前导航高亮显示.我 ...