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 ...
随机推荐
- 剑指offer:栈的压入、弹出序列
题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该 ...
- 第二个Sprint ------第七天、第八天、第九天、第十天,第十一天
这几天我们主要讨论界面的设计,也终于有了个初步的界面: 主界面截图
- vs安装体验
鉴于vs都是英文,所以安装的时间实在是太长了,经过4个小时终于装完了. 首先要下载和安装Unit Test Generator.步骤为:tools->Extensions and Updates ...
- ElasticSearch 2 (17) - 深入搜索系列之部分匹配
ElasticSearch 2 (17) - 深入搜索系列之部分匹配 摘要 到目前为止,我们介绍的所有查询都是基于完整术语的,为了匹配,最小的单元为单个术语,我们只能查找反向索引中存在的术语. 但是, ...
- [转帖]Kubernetes及容器编排的总体介绍【译】
Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIA ...
- Linux 下安装nginx的总结 (之前写的有问题))
1. 下载niginx的 tar包 下载路径 http://nginx.org/en/download.html 也可以直接使用命令下载 wget http://nginx.org/download/ ...
- Android 出现 maybe missing INTERNET permission 错误问题解决
在AndroidManifest.xml中,需要进行如下配置:<manifest> //加入以下许可 <uses-permission android:name="andr ...
- 使用fiddler的过滤条件
使用fiddler抓包的时候经常一下子显示很多的记录,看的眼花缭乱,需要这时候需要使用过滤条件来帮助你,一般常用的有三种过滤条件: 1.域名过滤,只显示特定域名的记录: *.baidu.com表示所有 ...
- java学习之switch 等值判断
当匹配到相等的值时候 则进入case里面执行语句 当该语句有break时候 则退出匹配 当没有break时候 则继续往下匹配 直到遇到break才停止匹配
- kubernetes部署
[自动安装] 一:操作环境 操作系统 centos7 防火墙selinux #systemctl stop firewalld && systemctl disable fire ...