bash编程练习脚本

author author     2022-08-30     804

关键词:

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);

分别这两类用户的个数;通过字符串比较来实现;

通过while循环遍历来实现。

while循环的特殊用法(遍历文件的行):

         while  read VARIABLE; do

                   循环体;

         done  < /PATH/FROM/SOMEFILE

                   依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将基赋值给VARIABLE变量;

[[email protected]]# vim  login.sh

#!/bin/bash

#

#Author=dylan

login_user=0

nologin_user=0

while read line; do

         usershell=$(echo$line | cut -d: -f7)

         if[ "$usershell" == "/sbin/nologin" ];then

                   letnologin_user++

         else

                   letlogin_user++

         fi

done < /etc/passwd

echo "Number of userslogin:$login_user"

echo "Number of usersnologin:$nologin_user"

代码如下:

技术分享

执行如下:

技术分享

2、写一个脚本

(1)获取当前主机的主机名,保存于hostname变量中;

(2)判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com

(3)否则,则显示当前主机名;

vim hostnametest.sh

#!/bin/bash

#

#Author=dylan

hostname=$(uname -n)

if [ "$hostname" =="localhost" ];then

         hostnamewww.magedu.com

else

         echo$hostname

fi

代码如下:

技术分享

执行如下:

技术分享

3、写一个脚本,完成如下功能

(1)传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

(2)如果存在,则显示此设备上的所有分区信息;

vim devtest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -lt 1 ];then

         echo"Plesase supply a disk path:Usage /dev/[s|h]d[a-z]"

         exit2

fi

if [ -b $1 ]; then

         fdisk-l $1

else

         echo"Invalid file"

fi

代码如下:

技术分享

执行如下:

技术分享

4、写一个脚本,完成如下功能

脚本能够接受一个参数;

(1)如果参数1quit,则显示退出脚本,并执行正常退出;

(2)如果参数1yes,则显示继续执行脚本;

(3)否则,参数1为其它任意值,均执行非正常退出;

[[email protected] home]# vim  arg.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         case$1 in

         "quit")

                   echo"quitting..."

                   exit0

                   ;;

         "yes")

                   echo"continuing..."

                   exit0

                   ;;

         *)

                   echo"interrupt..."

                   exit2

         esac

fi

代码如下:

技术分享

执行如下:

技术分享

5、写一个脚本,完成如下功能

传递一个参数给脚本,此参数为gzipbzip2或者xz三者之一;

(1)如果参数1的值为gzip,则使用targzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz

(2)如果参数1的值为bzip2,则使用tarbzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2

(3)如果参数1的值为xz,则使用tarxz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz

(4)其它任意值,则显示错误压缩工具,并执行非正常退出;

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one argument"

         exit1

else

         case$1 in

         "gzip")

                   tar-zcvf /backups/etc-`date +"%Y%m%d"`.tar.gz /etc &> /dev/null

                   echo"use gzip "

                   exit0

         ;;

         "bzip2")

                   tar-jcvf /backups/etc-`date +"%Y%m%d"`.tar.bz /etc &> /dev/null

                   echo"use bzip2 "

                   exit0

         ;;

         "xz")

                   tar-Jcvf /backups/etc-`date +"%Y%m%d"`.tar.xz /etc &> /dev/null

                   echo"use xz "

                   exit0

         ;;

         *)

                   echo"invalid compress tools"

                   exit2

         esac

fi

代码如下:

技术分享

执行如下

技术分享

6、写一个脚本,接受一个路径参数:

(1)如果为普通文件,则说明其可被正常访问;

(2)如果是目录文件,则说明可对其使用cd命令;

(3)如果为符号链接文件,则说明是个访问路径;

(4)其它为无法判断;

[[email protected] home]# vim filetest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         if[ -f $1 ];then

                   echo"It is a normal file that can be accessed normally"

         elif[ -d $1 ];then

                 echo"It is a directory file,then you can use the cd command"

         elif[ -L $1 ];then

                   echo"It is a aymbolic link file,the description ia an access path"

         else

                   echo"It can not be judged"

         fi

fi

 

代码如下:

技术分享

执行如下:

技术分享

7、写一个脚本,取得当前主机的主机名,判断

(1)如果主机名为空或为localhost,或为"(none)",则将其命名为mail.magedu.com

(2)否则,显示现有的主机名即可;

[r[email protected] home]# vim nametest.sh

#!/bin/bash

#

#Author=dylan

name=$(uname -n)

if [ -z "$name" -o  "$name" == "localhost" -o"$name" == "none" ];then

         hostnamemail.magedu.com

         echo"hostname is mail.magedu.com"

else

         echo$name

fi

代码如下:

技术分享

 

执行如下:

技术分享

8、写一脚本,接受一个用户名为参数;

(1)如果用户的id号为0,则显示其为管理员;

(2)如果用户的id号大于0且小于500, 则显示其为系统用户;

(3)否则,则显示其为普通用户;

 

[[email protected] home]# cat idtest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         id$1 &>/dev/null

         if[ $? -ne 0 ];then

                   echo"user does not exist"

                   exit2

         else

                   userid=$(id-u $1)

                   if[ $userid -eq 0 ];then

                            echo"sys admin"

                   elif[ $userid -gt 0 -a $userid -lt 500 ];then

                            echo"sys user"

                   else

                            echo"general user"

                   fi

         fi

fi

 

代码如下:

技术分享

执行如下:

技术分享


本文出自 “11290766” 博客,请务必保留此出处http://rylan.blog.51cto.com/11290766/1922679

bash编程练习,带选项,添加或删除用户(代码片段)

脚本练习题:  可以接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作;比如:adminusers.sh-a|--adduser..-d|--deluser...-v|--verbose-h|--help  -a|--adduser1,user2....:创建一个用户或多个;-... 查看详情

bash脚本编程之三条件判断及算术运算

练习:写一个脚本,完成以下任务1、添加5个用户,user1,……,user52、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息3、每个用户添加完成后,都要显示用户某某已经成功添加!iduser1 ... 查看详情

bash脚本练习

练习一:1、添加5个用户,user1,...,user5;2、每个用户的密码同用户名,添加密码完成后,不显示命令的执行结果;3、每个用户添加完成后,都要显示用户某某已添加成功。useradduser1echo"user1"|passwd--stdinuser1&>/dev/nullecho"User1adde... 查看详情

5.while脚本练习

脚本编程:  顺序结构   选择结构    if,case  循环结构    for,while,until while循环:适用于循环次数未知的场景 语法:whileCONDITION;dostatement....done while练习:1.计算1到100正整数和 1一.while2#/bin/b... 查看详情

bash脚本进阶练习题

1、编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息[$#-lt1]&&echo"inputusername!"&&exitid$1&>/dev/nullif[$... 查看详情

bash脚本练习(欢迎提意见,共同学习)

#!/bin/bash#写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:#1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;#2、当用户选择... 查看详情

bash脚本编程之算术运算符(代码片段)

bash脚本编程之算术运算符+,-,*,/,**,%算术运算格式:1.letVAR=算术运算表达式2.VAR=$[算术运算表达式]3.VAR=$((算术运算表达式))4.VAR=$(expr$ARG1$OP$ARG2)注意:乘法符号在有些场景中需要使用转义符;实例1:[[email protected]~]#num1=2[[em... 查看详情

bash脚本编程

bash脚本编程的结构: bash脚本编程语言: 脚本类语言 解释性语言 过程式编程语言 过程式编程语言的结构: 顺序执行结构:默认 从上到下,自左而右执行所有的语句(命令) 选择执行结构: 当条件满足或不满足时才会执... 查看详情

bash脚本编程基础及配置文件

(一)shell脚本编程编程语言的分类:根据运行方式:编译运行解释运行根据编程过程中功能的实现是调用库还是调用外部的程序文件:shell脚本编程:利用系统上的命令及编程组件进行编程完整编程:利用库或编程组件进行编... 查看详情

bash -- 杀死命令脚本 [重复]

...并希望得到一些帮助以开始学习。我目前正在做一个热身练习,需要我编写一个shell脚本,当执行该脚本时,它将杀死我给出的命令的任何当前正在运行的进程。在这个练习中,我使用了“less”命令(所以为了测试我会输入“m 查看详情

bash脚本编程之在bash脚本中使用选项

[[email protected]~]#vima#!/bin/bash#Name:abc#Description:Createscript#Author:mylinux#Version:0.0.1#Datatime:03/02/1214:42:00#Usage:mkscriptFILENAMEcat>$1 <<EOF#!/bin/bash#Name:`bas 查看详情

bash脚本编程基础

bash脚本编程:首先了解一下shell脚本编程的特点: 过程式编程语言 脚本类语言 解释型语言过程式编程语言: 顺序执行结构: 以从左到右,从上到下顺序执行所有的语句(命令) shell脚本的主体结构; 选择执行结构: 依照给定... 查看详情

bash脚本编程基础

...ate:2017-10-23要写代码注释:#缩进,适度添加空白行语言:编程语法格式,库,算法和数 查看详情

linux中编写bash脚本的10个技巧

Shell脚本编程是你在Linux下学习或练习编程的最简单的方式。尤其对系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。本文中,我们将分享10个写出高效可靠的bash脚本的实... 查看详情

bash脚本编程之条件判断

1、bash脚本编程格式:顶格写#!/bin/bash接下来给出一些注释信息,以#开头如:    #description    #version    #auhorceshi<[email protected]>   &nbs 查看详情

bash脚本编程之用户交互

bash脚本编程之用户交互:read[option]...[name...]    -p‘PROMPT‘  读取输入的内容    -tTIMEOUT    超时时间,如果超过了该时间,继续执行下面代码bash-n/path/to/some_script&nbs 查看详情

bash脚本编程学习笔记

  bash脚本语言,不同于C/C++是一种解释性语言。即在执行前不需要事先转变为可执行的二进制代码,而是每次执行时经解释器解释后执行。bash脚本语言是命令的堆砌,即按照实际需要,结合命令流程机制实现的源程序,因此... 查看详情

bash脚本编程基础

1、编程基础 程序:指令+数据 程序编程风格:            过程式:以指令为中心,数据服务于指令            对象式:以 查看详情