bash编程练习脚本

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)如果参数1为quit,则显示退出脚本,并执行正常退出;

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

(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、写一个脚本,完成如下功能

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

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

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

(3)如果参数1的值为xz,则使用tar和xz归档压缩/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)否则,显示现有的主机名即可;

[[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

代码如下:

执行如下:

时间: 2024-11-08 23:31:21

bash编程练习脚本的相关文章

[shell] Bash编程总结

由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进行简单的总结. 1. shell概述 shell是介于用户和类Unix操作系统内核(kernel)之间的一个接口,是为了保护内核不被用户误操作造成损害,在内核的周围建立一个外壳(shell). 用户通过向shell提出请求,shell解释并将请求传给内核.而多个shell请求可以写在一个文件中,便构

linux下Bash编程组合测试及编写脚本(五)

linux下Bash编程组合测试及编写综合脚本(五) 1.Bash编程组合测试条件 -a: 与关系 -o: 或关系 !: 非关系 表示方法1:[ $# -gt 100 -a $# -le 500 ] 表示方法2:[ $# -gt 100 ] && [ $# -le 500 ] 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是--add:,将添加用户; 如果选项是--del,将删除用户,如果是--help显示帮助信息 2.2:脚本选项后面的参数可任意指定多个用户并且用

linux下Bash编程循环语句特殊用法之编写脚本(十)

linux下Bash编程while语句特殊用法之编写脚本(十) 1.循环控制: break:中断整个循环语句,即退出循环后执行脚本后面的语句 continue:中断当前本次循环,提前进入下一轮循环 exit:结束脚本运行 2.while死循环,即当不知道循环多少次时 格式 : while :; do 循环语句 done 3.while从输入重定向文件中每行读取并赋值给read变量 格式:  while read LINE;do 循环语句 done < 路径文件 4.实例脚本 4.1.找出/etc

bash编程快速入门

首先,我们简单的介绍一下bash,bash是GNU计划编写的Unixshell,它是许多Linux平台上的内定shell,它提供了用户与系统的很好的交互,对于系统运维人员,bash的地位是举足轻重的,bash编程能很快处理日常的任务 bash入门,一个最简单的bash例子 #vim hello.sh #!/bin/bash #This is the first example of the bash #echo "Hello world" 下面,我们就这个简单的bash 脚本来介绍一下

bash编程:Shell练习题

bash编程:练习题 1. 写一个脚本:如果某路径不存在,则将其创建为目录:否则显示其存在,并显示内容类型 #!/bin/bash # baseurl=/var/tmp/testdir if [ -e $baseurl ]; then echo "file is no exists." else mkdir -p $baseurl file $baseurl fi 2. 写一个脚本,完成如下功能:判断给定的两个数值,孰大孰小:给定数值的方法:脚本参数,命令交互 #!/bin/bash

Linux bash编程入门

一.bash编程入门 编程语言: 编译型语言:编译器  c,c++ 解释型语言:解释器 解释器可独立运行 变量:保持数据的载体,命令的内存空间 本地变量: 环境变量 局部变量: 位置参数变量:$1,$2..., 特殊变量: $0 当前脚本的名字 shell脚本:shebang #!/bin/bash         #解释此脚本的shell路径,内核调用对应的解释器来解释脚本 #Description: #Version: #Author: #License: #Datetime: 脚本文件,其

bash编程初体验之for

bash编程初体验之for for while until 概述 本文将介绍以for为代表的循环语句在shell 脚本中的应用,常见的循环语句有for, while, until,作为循环语句,顾名思义,它就是重复地做一件事,直到满足某一条件而退出:另外,还有两个循环控制语句continue与break来配合循环语句,以实现临时中断或跳出循环的功能:以下为for, while, until的知识点提炼: for, while, until 进入条件          for: 列表元素非空   

bash 编程 awk

awk提供了一个类编程环境,允许修改和重新组织文件中的数据        定义变量来保存数据        使用算术和字符串操作符来处理数据        使用结构化编程概念        提取数据文件中的数据并将它们按另一顺序提取数据元素重新放置,从而生成格式化报告 命令格式 awk options program file 选项 -F fs 指定分隔符 -f file 指定读取程序的文件名 -v var=vlaue 定义程序中的一个变量及其默认值 -mf n 要处理的数据文件中的最大字段数

15、自学——Linux的学习进度与任务【bash编程之条件判断】

bash编程之条件判断 bash编程之条件判断:判定后续操作的前提条件是否满足 1.条件判断的常用判断类型(bash内生的): 整数测试 字符测试 文件测试   2.echo $?(执行状态返回值): 0:正确 1-255:错误 布尔值: 真 假 3.逻辑运算: 与运算: 真 && 真 = 真(0) 真 && 假 = 假(非0) 假 && 真 = 假 假 && 假 = 假 或运算: 真 || 真 = 真(0) 真 || 假 = 真 假 ||