Shell编程入门(第二版)(中)
变量測试语句-test
作用:用来測试变量是否相等,是否为空,文件类型等。
格式:
test 測试条件 或 [] #范围:整数,字符串。文件
1)整数測试:
test int1 -eq int2 測试整数是否相等
test int1 -ge int2 測试int1是否>=int2
test int1 -gt int2 測试int1是否>int2
test int1 -le int2 測试int1是否<=int2
test int1 -lt int2 測试int1是否<int2
test int1 -ne int2 測试整数是否不相等
2)字符串測试:
test str1=str2 測试字符串是否相等
test str1!=str2 測试字符串是否不相等
test str1 測试字符串是否不为空
test -n str1 測试字符串是否不为空
test -z str1 測试字符串是否为空
3)文件測试:
test -d file 指定文件是否文件夹
test -f file 指定文件是否常规文件
test -x file 指定文件是否可运行
test -r file 指定文件是否可读
test -w file 指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件的大小是否非0
注:test測试语句一般不单独使用,一般作为if语句的測试条件,如;
if test -d file
then
....
fi
test的变量的简写形式”[]”
演示样例-apachtest.sh
#!/bin/bash
# A test shell script for test Apache is running or not web=$(/usr/bin/pgrep httpd) echo "Now let's test the Apache..."
echo #if [ "$web" != "" ]
if [ -n "$web" ]
then
echo "Apache is running..."
else
echo "Apache is NOT running..."
/etc/rc.d/init.d/httpd start
fi
流程控制语句
流控制语句:用于控制shell程序的流程
exit语句:退出程序运行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。
比如:exit 0
一、if
if/then格式
if test -d $1
then
...
fi
演示样例-if_then.sh
#!/bin/bash
# A test shell script for if/then if [ -x /etc/rc.d/init.d/httpd ]
then
echo "Script: /etc/rc.d/init.d/httdp have x power!"
/etc/rc.d/init.d/httpd restart
fi
if/else格式
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令3
fi
多个条件的联合:
-a: 逻辑与,仅当两个条件都成立时,结果为真。
-o: 逻辑或,两个条件仅仅要有一个成立,结果为真。
演示样例-if_else.sh
#!/bin/bash
# A test shell script for if/elif/else echo -n "Please input a filename: "
read filename if [ -d $filename ]
then
echo "$filename is a directory"
elif [ -f $filename ]
then
echo "$filename is a commen file"
elif [ -c $filename -o -b $filename ]
then
echo "$filename is a device file"
else
echo "$filename is a unkown file"
fi
演示样例-if_elif_exit.sh
#!/bin/bash
# A test shell script for if/elif if [ $# -ne 2 ]
then
echo "Not enough parameters"
exit 1
fi if [ $1 -gt $2 ]
then
echo "$1 is great then $2"
elif [ $1 -lt $2 ]
then
echo "$1 is little then $2"
else
echo "$1 is equal as $2"
fi
二、for/in
for 变量 in 名字表
do
命令列表
done
演示样例-for.sh
#!/bin/bash
# A test shell script for "for" for DAY in Sunday Monday Tuesday Wednesday Thursday Friday Saturday
do
echo "The day is $DAY"
done
awk命令[分段提取]
awk -F域分隔符 ‘命令’[单引號] #假设不用-F指定切割符,默觉得空格
1、检測系统中UID为0的用户
awk -F: '$3==0 {print $1}' /etc/passwd
#awk -F: '{print $1}' /etc/passwd
-F: 指定切割附为:
$3 表示以:为切割附的第三位
2、检測系统中password为空的用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow
#ps aux | grep -v root | awk '{print $2}'
演示样例-awk.sh
#!/bin/bash
# A test script for desplay users infomation /bin/echo -n "Please input a username: "
read username /bin/grep $username /etc/passwd > /dev/null 2> /dev/null if [ $? -eq 0 ]
then
/bin/echo "username is: $username"
else
/bin/echo "user: $username is not exits."
exit 1
fi
/bin/echo # list /etc/passwd info
userinfo=`/bin/grep ^$username:x /etc/passwd`
uid=`echo $userinfo | awk -F: '{print $3}'`
gid=`echo $userinfo | awk -F: '{print $4'}`
dir=`echo $userinfo | awk -F: '{print $6}'`
shell=`echo $userinfo | awk -F: '{print $7}'` # get /etc/group info
groupinfo=`/bin/grep x:$gid /etc/group`
gname=`/bin/echo $groupinfo | awk -F: '{print $1}'` /bin/echo "user id is: $uid"
/bin/echo "default group is: $gname"
/bin/echo "home directory is: $dir"
/bin/echo "shell is: $shell"
/bin/echo "group member info:" # get group members
groups=`/usr/bin/groups $username`
/bin/echo $groups
/bin/echo # get online info
online=`/usr/bin/who | grep $username`
if [ -z "$online" ]
then
echo "$username is not online"
else
echo "$username is online..."
fi
实例-killuser.sh
#思路:将一个用户全部的进程包含shell都关闭,则相当于将该用户踢出了系统
#!/bin/bash
# A shell sript to kill a user in Linux username=$1 killpid=`/bin/ps aux | grep $username | awk '{print $2}'` for PID in $killpid
do
/bin/kill -9 $PID 2> /dev/null
done
Shell编程入门(第二版)(中)的更多相关文章
- Shell编程入门(第二版)(下)
... ... command n done #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令 示例-select.sh [python] view plainc ...
- Shell编程入门(第二版)(上)
简单的示例Shell程序 示例1. #!/bin/bash #This is to show what a shell script looks like echo "Our first e ...
- Learning ROS for Robotics Programming - Second Edition(《ROS机器人编程学习-第二版》)
Learning ROS for Robotics Programming - Second Edition <ROS机器人编程学习-第二版> ----Your one-stop guid ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- shell编程系列1--shell脚本中的变量替换
shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...
- Linux Shell编程入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- 转:Linux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- COM编程入门第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需 ...
- 转inux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
随机推荐
- 数据分析python应用到的ggplot
数据分析中应用到python中的ggplot库,可以用来画图 数据之类的用优达学院中课程七中的数据为例 数据是:https://s3.amazonaws.com/content.udacity-dat ...
- IOS-优质应用推荐
壁纸应用 cuto 免费 点击下载 shots 收费 点击下载 Cutisan 锁屏壁纸制作下载地址 待办事项 TodayMind - 提醒事项触手可及 点击下载 滴答清单 点击下载 Microsof ...
- python基础(9)--递归、二叉算法、多维数组、正则表达式
1.递归 在函数内部,可以调其他函数,如果一个函数在内部调用它本身,这个函数就是递归函数.递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于裂解 递归算法解决问题的特点: 1)递归是 ...
- linux下设置opencv环境变量
一.安装opencv(这里不再讲述) 二.添加库路径(创建opencv.conf文件) 输入命令:vi /etc/ld.so.conf.d/opencv.conf 输入/usr/local/lib,并 ...
- mouseover与mouseenter,mouseout与mouseleave的区别
mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件.只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mouseout ...
- socket.io分布式
socket.io是目前较为流行的web实时推送框架,其基于nodejs语言开发,底层用engine.io实现. 借助nodejs语言异步的特性,其获得了不错的性能.但单个实例的socket.io依然 ...
- PHP原理之对象(一)
作者: Laruence( ) 本文地址: http://www.laruence.com/2008/08/22/412.html 转载请注明出处 或许你知道,或许你不知道,PHP是一个弱类型,动 ...
- Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果
Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明 ...
- FastReport.Net使用:[34]小册子报表(奇偶页)
打印一份小册子类型的报表,能实现如下要求: ●单独的封面,目录,报表内容,背面 ●奇偶页不同的页边距 ●奇偶页不同的页面/页脚 下面的例子将用到以上3点. 1.奇偶页的实现主要通过报表控件对象的Pri ...
- 【BZOJ 3289】 3289: Mato的文件管理 (莫队)
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2819 Solved: 1185 Description Mato同 ...