变量测试语句-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 notweb=$(/usr/bin/pgrep httpd)echo "Now let's test the Apache..."
echo#if [ "$web" != "" ]
if [ -n "$web" ]
thenecho "Apache is running..."
elseecho "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/thenif [ -x /etc/rc.d/init.d/httpd ]
thenecho "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 条件2then 命令2 else 命令3 fi 

多个条件的联合:

-a: 逻辑与,仅当两个条件都成立时,结果为真。

-o: 逻辑或,两个条件只要有一个成立,结果为真。

示例-if_else.sh

#!/bin/bash
# A test shell script for if/elif/elseecho -n "Please input a filename: "
read filenameif [ -d $filename ]
thenecho "$filename is a directory"
elif [ -f $filename ]
thenecho "$filename is a commen file"
elif [ -c $filename -o -b $filename ]
thenecho "$filename is a device file"
elseecho "$filename is a unkown file"
fi

示例-if_elif_exit.sh

#!/bin/bash
# A test shell script for if/elifif [ $# -ne 2 ]
then
echo "Not enough parameters"
exit 1
fiif [ $1 -gt $2 ]
thenecho "$1 is great then $2"
elif [ $1 -lt $2 ]
thenecho "$1 is little then $2"
elseecho "$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
doecho "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、检测系统中密码为空的用户

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/nullif [ $? -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" ]
thenecho "$username is not online"
elseecho "$username is online..."
fi

实例-killuser.sh

#思路:将一个用户所有的进程包括shell都关闭,则相当于将该用户踢出了系统
#!/bin/bash
# A shell sript to kill a user in Linuxusername=$1killpid=`/bin/ps aux | grep $username | awk '{print $2}'`for PID in $killpid
do/bin/kill -9 $PID 2> /dev/null
done

转载于:https://www.cnblogs.com/itrena/p/5927018.html

Shell编程入门(第二版)(中)相关推荐

  1. Shell编程入门(第二版)(下)

    流程控制语句 三.select/in[较少用] 格式: [python] view plaincopy select [变量] in [关键字] do command 1 ... ... comman ...

  2. Shell编程入门(第二版)(上)

    简单的示例Shell程序 示例1. #!/bin/bash #This is to show what a shell script looks like echo "Our first e ...

  3. Shell 编程入门

    走进 Shell 编程的大门 为什么要学Shell? 学一个东西,我们大部分情况都是往实用性方向着想.从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多 ...

  4. Shell编程入门-Shell程序设计实例

    Shell编程入门-Shell程序设计实例 1.增加用户账户 编写一个Shell程序addaccount.sh,在系统中增加四个账户,同时设定他们的初始密码为123456,主组群为wl20. ①查看系 ...

  5. Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一.Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行 二.Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变 ...

  6. 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第36页第二章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 2.21 练习 2-1. 变量,print和字符串格式化操作符.启动交互式解 ...

  7. 《Python核心编程(第二版)》——1.9 练习

    本节书摘来自异步社区<Python核心编程(第二版)>一书中的第1章,第1.9节,作者[美]Wesley J. Chun,宋吉广 译,更多章节内容可以访问云栖社区"异步社区&qu ...

  8. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

  9. 《Python核心编程》第二版第18页第一章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第18页第一章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 1.9 练习 1-1. 安装Python.请检查Python是否已经安装到你 ...

最新文章

  1. Django框架之初识
  2. NVIDIA Jetson Xavier NX安装torch和torchvision
  3. 宝藏文章!【CCNA命令大全】
  4. Leecode之翻转整数
  5. MyBatis 关系映射XML配置
  6. php订阅系统,php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
  7. minhash算法检索相似文本_基于向量的深层语义相似文本召回?你需要bert和faiss...
  8. jQuery Callback 方法
  9. 自定义分页信息java_java-displaytag自定义分页
  10. 用vue做一个简单的emoji表情组件
  11. 计算机网络白龙飞,成电等你来 | 你的辅导员已上线,男神辅导员闪亮登场(一)...
  12. 从零开始学习CANoe(四)—— 设计panel
  13. android学习笔记----多线程断点续传下载原理设计
  14. 微信开发五之微信红包开发
  15. 基于Java的亚马逊“手机”评论爬虫的情感分类分析
  16. 连接线是计算机硬件吗,音箱线怎么连接电脑?有源音箱和无源音箱连接电脑教程...
  17. xp win7 绿色chrome
  18. 几种颜色单位设置(颜色设置)
  19. NeurlPS 2020来啦!AI TIME PhD 顶会专场直播预告
  20. json转义问题(消除反斜杠及{}外面多余的“)

热门文章

  1. 原子性 atomic 类用法
  2. 《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构
  3. takePic and Videos
  4. 编写安全 PHP 应用程序的七个习惯
  5. Servlet的生命周期 与CGI的区别
  6. 40个漂亮的单页网站设计案例(上篇)
  7. ESX与ESXi管理员必备25个命令
  8. 在AIX上编译Samba
  9. linux培训课程第六天:ppt以及笔记
  10. ppt图表图表类型起始_梅科图表