shell脚本练习【转】
1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;
#脚本内容
[root@centos script]# cat week9_title1.sh
#!/bin/bash
#Author Jerry
# #Display shell is nologin user's shell count
echo "The shell is nologin user count is $(grep -o "nologin" /etc/passwd |wc -l)" #Display shell not's nologin user's shell count
echo "The shell not's nologin user count is $(grep -v "nologin" /etc/passwd |wc -l)" #测试脚本
[root@centos script]# bash week9_title1.sh
The shell is nologin user count is 25
The shell not's nologin user count is 7
[root@centos script]#
2、写一个脚本
(1) 获取当前主机的主机名,保存于hostname变量中;
(2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
(3) 否则,则显示当前主机名;
[root@centos script]# cat week9_title2.sh
#!/bin/bash
#Author Jerry
# hostname=$(hostname) if [ $hostname == "localhost" ];then
hostname www.magedu.com
echo "current hostname is:$hostname"
else
echo "current hostname is:$hostname" fi
[root@centos script]#
3、写一个脚本,完成如下功能
(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
(2) 如果存在,则显示此设备上的所有分区信息;
[root@centos script]# cat week9_title3.sh
#!/bin/bash
#Author Jerry
# [ $# -lt 1 ] && echo "please atleast input on" if [ -b $1 ];then
fdisk -l $1
else
echo "nothing"
fi
4、写一个脚本,完成如下功能, 脚本能够接受一个参数;
(1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
(2) 如果参数1为yes,则显示继续执行脚本;
(3) 否则,参数1为其它任意值,均执行非正常退出;
[root@centos script]# bash week9_title4.sh
please input one atleast
error!!!!!
[root@centos script]# bash week9_title4.sh quit
exit....
[root@centos script]# bash week9_title4.sh yes
go!go! go!
[root@centos script]# echo $?
0
[root@centos script]#
[root@centos script]# cat week9_title4.sh
#!/bin/bash
#Author Jerry
# [ $# -eq 0 ] && echo "please input one atleast" case $1 in yes)
echo "go!go! go! "
;; quit)
echo "exit...."
exit 0
;; *)
echo "error!!!!!"
exit 2
;; esac
[root@centos script]#
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) 其它任意值,则显示错误压缩工具,并执行非正常退出;
[root@www /]# cat /script/week9_title5.sh
#!/bin/bash if [ $# -eq 0 ];then
echo "give me a argument,the argument is gzip bzip2 xz "
exit 19
fi mkdir /backups &> /dev/null case $1 in
gzip)
tar -zcvf /backups/etc-`date +%Y%m%d`.tar.gz /etc
;;
bzip2)
tar -jvf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
;;
xz)
tar -Jvf /backups/etc-`date +%Y%m%d`.tar.xz /etc
;;
*)
echo "error!!!"
;;
esac
[root@www /]#
6、写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问;
(2) 如果是目录文件,则说明可对其使用cd命令;
(3) 如果为符号链接文件,则说明是个访问路径;
(4) 其它为无法判断;
[root@www script]# cat week9_title6.sh
#!/bin/bash
#Author Jerry
# #Check whether the user is to script a path parameter
[ $# -lt 1 ] && echo "Please give a path to the script parameters" if [ -f $1 ]; then echo "这是一个普通文件,可以被正常访问" elif [ -d $1 ];then echo "这是一个目录文件,可以使用cd命令" elif [ -h $1 ];then echo "这是一个符号链接文件,它是一个访问路径" elif [ ! -h $1 ] && [ ! -d $1 ] && [ ! -f $1 ];then echo "这是什么鬼,不想跟你说话并向你扔了一只狗!!!"
exit fi
7、写一个脚本,取得当前主机的主机名,判断
(1) 如果主机名为空或为localhost,或为""(none)"",则将其命名为mail.magedu.com;
(2) 否则,显示现有的主机名即可;
#!/bin/bash
hostname=$(hostname)
if [ -z "$hostname" -o "$hostname" == "localhost" -o "$hostname" == "none" ];then
hostname mail.magedu.com
else
echo "$hostname"
fi
8、写一脚本,接受一个用户名为参数;
(1) 如果用户的id号为0,则显示其为管理员;
(2) 如果用户的id号大于0且小于500, 则显示其为系统用户;
(3) 否则,则显示其为普通用户;
#!/bin/bash
if [ $# -eq 0 ];then
echo "input argu"
exit 1
fi
userid=$(id -u)
if [ $userid -eq 0 ];then
echo "admin"
elif [ $userid -gt 0 -a $userid -lt 500 ];then
echo "system"
else
echo "user"
fi
10、写一个脚本,传递一个用户名参数给脚本;
(1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;
(2) 否则,则显示无法登录系统;
#!/bin/bash
if [ $# -eq 0 ];then
echo "input argu"
exit 1
fi
userid=grep ^$1 /etc/passwd | grep sh$ | cut -d: -f3
if [ $userid -ge 500 ];then
echo " a user can log system"
else
echo "nologin"
fi
11、写一个脚本,完成如下任务 :
(1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;
(2) 复制目录时,才使用cp -r命令;
(3) 复制文件时使用cp命令;
(4) 复制链接文件时使用cp -d命令;
(5) 余下的所有类型,使用cp -a命令;"
#!/bin/bash
for i in 'ls /var/log';do
if [ -d $i ];then
cp -r /var/log/$i /tmp/test/test1-testn/$i
elif [ -f $i ];then
cp /var/log/$i /tmp/test/test1-testn/$i
elif [ -L $i ];then
cp -d /var/log/$i /tmp/test/test1-testn/$i
else
cp -a /var/log/$i /tpm/test/test1-testn/$i
fi
done
转载请注明:linux运维部落 » 往死里苦练脚本啊啊啊啊啊啊啊~~~~~~~~~~~~~~~~
shell脚本练习【转】的更多相关文章
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- shell脚本规划化模板
shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Linux Shell脚本逻辑操作符简介
在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- shell 脚本之循环使用 for while 详解
任何一种编程语言中循环是比不可少的,当然 shell 脚本也少不了循环语句,包括 for 语句. while 语句.文中主要以实际用例来说明 for while 都有哪些常见的使用方法和技巧. 一.f ...
随机推荐
- Ubuntu16.04配置TOMCAT8
基于虚拟机Ubuntu16.04配置Tomcat过程 一.安装JDK 首先要确定好要安装的jdk和tomcat版本能对的上,具体如图所示: 版本选择是Jdk1.8,首先上官网http://www.or ...
- 老李的blog使用日记(3)
匆匆忙忙.碌碌无为,这是下一个作业,VS,多么神圣高大上,即使这样,有多少人喜欢你就有多少人烦你,依然逃不了被推销的命运,这抑或是它喜欢接受的,但是作为被迫接受者,能做的的也只有接受,而已. 既来之则 ...
- 从零开始学Kotlin-类和对象(5)
定义一个类 定义一个类,使用关键字class声明,后面跟类名(不使用new) class demo5 {//定义一个类,使用关键字class声明,后面跟类名 fun test() {//类中定义方法 ...
- XenServer DVSC
DVSC: Distribute Virtual Swithc Controller(分布式虚拟交换机控制器). DVSC是一种逻辑的集中式的虚拟交换机,它能让你控制来自于不同XenServer Ho ...
- 制作U盘启动盘并重装系统
进入网站 http://www.msdn.hk/6/209/ 在列表中选择自己需要的系统,比如win7_64,则可以选择下图系统:Windows 7 Ultimate with Service Pac ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
Python (Windows 下) 自带了一个非常有趣的 海龟绘图程序 (turtle),它是本系列课程的主角. 在 PyCharm 中,新建一个项目,然后在代码编辑器中输入 import turt ...
- js保留两位小数方法总结
js保留两位小数方法总结 最近在做结算系统,经常需要用到金额保留两位小数,刚开始我一直用的是Angular中的过滤器number |2,但是,这无法满足我的需求.问题是,当用户离开文本框时,我需要将用 ...
- AOP 环绕通知 集成了前置 后置 返回通知等功能
AOP 环绕通知 集成了前置 后置 返回通知等功能
- SSM 关于service和dao的封装
近期由于客户需求,所以我们整个小组开始开发java项目. 虽然很久以前也是系统学习过.不过干了这么多年 .net ,有关java的早就扔了. 好了,废话不多说.我们看看SSM 关于service和d ...
- CF933A A Twisty Movement
题意翻译 给定一个序列 A,你可以翻转其中的一个区间内的数,求翻转后的序列的最长不下降子序列的长度.(∣A∣≤2000,1≤ai≤2|A|\le 2000,1\le a_i \le 2∣A∣≤2000 ...