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

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

通过while循环遍历来实现。

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

while  read VARIABLE; do

循环体;

done  < /PATH/FROM/SOMEFILE

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

[root@localhosthome]# 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为其它任意值,均执行非正常退出;

[root@localhost 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)其它为无法判断;

[root@localhost 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)否则,显示现有的主机名即可;

[root@localhost 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)否则,则显示其为普通用户;

[root@localhost 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

代码如下:

执行如下:

转载于:https://blog.51cto.com/rylan/1922679

bash编程练习脚本相关推荐

  1. linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)

    linux下Bash编程until语句及格式化硬盘分区等编写脚本(十) 1.循环语句结构总结 1.1.while语句当条件满足时,进入循环语句 while 条件; do 语句 done 1.2.unt ...

  2. linux内核与bash脚本接囗,Bash脚本编程之脚本基础和bash配置文件

    脚本基础 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行.例如C语言和Java语言. 解释运行:需要一个 ...

  3. bash 运行程序 下一步_怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. -- David Both(作者) Shell 是操作系统的命令解释器,其中 Bash ...

  4. Linux之bash编程基本语法

    在Linux运维工作中,我们为了提高工作效率通常会用bash编写脚本来完成某工作. 今天就来为大家介绍bash的一些常见的基本语法. 在讲解bash语法之前首先介绍一下bash. bash环境主要是由 ...

  5. 第五课 vim基本用法、bash编程初步和for循环

    1.vim的基本用法 2.vim的高级用法 3.bash编程初步 4.bash算术运算.位置参数和read 一.文本编辑工具 vi vim     vimtutor在线帮组文档 全屏编辑器(nano, ...

  6. bash编程初体验之if

    bash编程初体验之if read if case 概述 在本篇文章中,我们将介绍bash编程中有关if语句的简单用法,.如此,如果条件为真,if会执行一种指令,如果条件为假,if会选择执行另一种指令 ...

  7. shell编程,脚本语言

    Cut 按照字符提取 head -2 1.txt | cut -c 5 指定分隔符 head -2 1.txt | cut -d ':' -f 1,2 Sort 文本排序 sort 文件名 文本排序反 ...

  8. redhat linux之bash 编程

    bash编程:     bash进程:解释器         type shell脚本:     第一行,顶格:         shebang         #!/bin/bash        ...

  9. bash编程(马哥)

    bash基础特性: 命令行展开:~,{} 命令别名:alias,unalias 命令历史:history 命令和路径补全:$PATH glob通配符:*,?,[],[^], 快捷键:Ctrl+{a,e ...

最新文章

  1. 关于C#中timer类 在C#里关于定时器类就有3个
  2. JAVA中String与StringBuffer的区别
  3. 使用Kubectl部署应用
  4. linux history文件路径,Linux、Unix常用命令(文件和目录相关)
  5. 如何使antd中table表格不换行
  6. python的六大数据类型中可以改变_在python中更改数组的数据类型
  7. Qt工作笔记-QHash与QMap查找速度粗略比较实战
  8. Java 高级算法——数组中查询重复的数字之二
  9. Fineui 添加打印控件
  10. 32位win10服务器系统,微软将停止支持32位Win10系统 32位Win10系统什么时候停止支持...
  11. python爬取微信公众号network_python如何爬取搜狗微信公众号文章永久链接的思路解析...
  12. 爬虫 第二讲 urllib模块和requests模块
  13. 电视盒子做文件共享服务器,【当贝市场】智能电视盒子和PC电脑文件共享教程...
  14. Python zip zip_longest
  15. 知数堂MySQL DBA在线培训第八期招生中
  16. canvas.toDataURL() gives “Security Error” in IE 11
  17. GPU加速(一)CUDA C编程及GPU基本知识
  18. 时间序列分析-如何写出ARIMA模型的公式
  19. Perseus(擎天):统一深度学习分布式通信框架
  20. 数据时代做好知识主人-自创文章

热门文章

  1. 利用python将一段DNA转录成RNA
  2. python实现对《白夜行》的词频统计
  3. 智能AI机器人,电商客服为何对它“情有独钟”?
  4. 自动六向梯形矫正是怎么弄,当贝X3六向自动梯形矫正快速方正告诉你
  5. Python控制流程语句实现各种小功能(用户身份认证、百分制转换等级制、英寸与厘米的转换、三角形的周长和面积、九九乘法表……)
  6. 无刷电机控制——硬件部分调试记录
  7. IE11打开网页会有彩色方块出现
  8. 超微主板BIOS Product key IPMI LICENSE
  9. Android 方向传感器与磁力计和加速度传感器之间的关系
  10. [JAVA毕业设计]html5大众汽车网站源码获取和系统演示