当前位置:  操作系统/服务器>linux

Linux shell脚本编程if语句的使用方法(条件判断)

    来源: 互联网  发布时间:2014-10-15

    本文导语:  if 语句格式if  条件then Commandelse Commandfi        别忘了这个结尾If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi     if 的三种条件表达式 ifcommandthen if 函数then 命令执行成功,等于返回0 (比如grep ,找到匹配)...

if 语句格式
if  条件
then
 Command
else
 Command
fi        别忘了这个结尾
If语句忘了结尾fi
test.sh: line 14: syntax error: unexpected end of fi     if 的三种条件表达式

if
command
then if
 函数
then
 命令执行成功,等于返回0 (比如grep ,找到匹配)
执行失败,返回非0 (grep,没找到匹配)
if [ expression_r_r_r  ]
then    表达式结果为真,则返回0,if把0值引向then
if test expression_r_r_r
then   表达式结果为假,则返回非0,if把非0值引向then      
   [ ] &&  ——快捷if
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
   && 可以理解为then
    如果左边的表达式为真则执行右边的语句       shell的if与c语言if的功能上的区别

 shell if      c语言if
0为真,走then   正好相反,非0走then
 不支持整数变量直接if
必须:if [ i –ne 0 ] 但支持字符串变量直接if
if [ str ] 如果字符串非0
 支持变量直接if
if (i ) 


 以多条command或者函数作为if 条件

代码如下:

echo –n “input:”
read user if
多条指令,这些命令之间相当于“and”(与)
grep $user /etc/passwd >/tmp/null     
who -u | grep $user
then             上边的指令都执行成功,返回值$?为0,0为真,运行then
 echo "$user has logged"
else     指令执行失败,$?为1,运行else                           
 echo "$user has not logged"
fi  
# sh test.sh
input : macg
macg     pts/0        May 15 15:55   .          2075 (192.168.1.100)
macg has logged

# sh test.sh
input : ddd
ddd has not logged       以函数作为if条件  (函数就相当于command,函数的优点是其return值可以自定义)

if
以函数作为if条件,
getyn
then   函数reture值0为真,走then
echo " your answer is yes"
else  函数return值非0为假,走else
echo "your anser is no"
fi      if command  等价于 command+if $?

$ vi testsh.sh
#!/bin/sh if
cat 111-tmp.txt | grep ting1
then
echo found
else
echo "no found"
fi
 $ vi testsh.sh
#!/bin/sh cat 111-tmp.txt | grep ting1
if [ $? -eq 0 ]
then
echo $?
echo found
else
echo $?
echo "no found"
fi
$ sh testsh.sh
no found    $ sh testsh.sh
1
no found
$ vi 111-tmp.txt
that is 222file
thisting1 is 111file $ sh testsh.sh
thisting1 is 111file
found
$ vi 111-tmp.txt
that is 222file
thisting1 is 111file $ sh testsh.sh
thisting1 is 111file
0
found
 

传统if 从句子——以条件表达式作为 if条件

代码如下:

if [ 条件表达式 ]
then
 command
 command
 command
else
 command
 command
fi


 条件表达式

if [ -f  file ]    如果文件存在
if [ -d ...   ]    如果目录存在
if [ -s file  ]    如果文件存在且非空
if [ -r file  ]    如果文件存在且可读
if [ -w file  ]    如果文件存在且可写
if [ -x file  ]    如果文件存在且可执行  
if [ int1 -eq int2 ]    如果int1等于int2  
if [ int1 -ne int2 ]    如果不等于   
if [ int1 -ge int2 ]       如果>=
if [ int1 -gt int2 ]       如果>
if [ int1 -le int2 ]       如果


    
 
 

您可能感兴趣的文章:

  • linux下如何将sql语句写为脚本 iis7站长之家
  • Linux bash 脚本编程 写一个printnumber脚本文件 急急急!!!明天作业
  • linux~shell编程~请教一个关于如何执行脚本的问题
  • Linux Shell脚本编程的注意事项
  • Linux命令行和shell脚本编程宝典 Richard Blum
  • linux下c/c++使用hash_map方法介绍
  • 我用的是红帽5 我想知道我LINUX下的KDbg的使用方法
  • 问个比较菜的问题: LINUX如何查询C函数的使用方法?
  • red hat linux 9.0中文件etc/inittab的作用及使用方法
  • 请问在Linux中,rcp远程拷贝命令的使用方法?
  • 请教linux下定时器的使用方法!
  • LINUX下freeradius服务器使用方法?
  • linux的tar命令参数-T的使用方法
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • linux停止和查看启动服务的命令使用方法
  • linux和unix的命令和terminal的使用方法都一样吗?
  • 在linux下或者windows下,如何发带vlan tag的tcp,udp,arp包。用啥工具,请详细说明使用方法。求教
  • 谁能列举一下linux中最常用的命令及使用方法啊?
  • linux下php-fpm开启关闭使用方法
  • Linux 下监控某进程 内存使用峰值的方法?
  • 请问在Linux和Windows XP中,rcp远程拷贝命令的使用方法?环境如何配置?
  • 请教!目前有没有在linux下使用COM组件的方法
  • 请问一下Linux中使用代理上网的方法
  • [Fedora] 使用Xmanger来实现在windows下通过远程桌面来访问linux主机的方法
  • Linux下Oracle的sqlplus使用光标上下左右方法
  • linux 下大数库 miracl 的使用方法,求高手指教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • UNIX/LINUX 在case语句里使用?
  • linux 内核一条语句求解
  • linux下用插桩技术实现计算语句覆盖率
  • linux 杀死名字相同的kill语句
  • 求助:linux脚本语言写SQL语句
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 新手请问一句linux汇编语句
  • 弱弱的问一句,在Linux模块编程中cleanup_module中用什么语句撤销申请的内存
  • 一个关于linux c 编程的小问题?请问下面的语句是什么意思?
  • linux Shell编程问题 for语句
  • linux下如何将sql语句写为脚本
  • unix/linux中eval语句的一个疑问
  • 在linux内核的.config文件中,类似 CONFIG_CC_ALIGN_LOOPS=0 的语句是什么意思?
  • 在linux C 调用 shell 语句 如何才能不回显执行结果
  • 求助一条Linux下AT&T的汇编语句
  • linux bash shell中case语句的实例
  • windows下写的源代码,其中有打印中文语句,移到linux编译后运行中文显示乱码了
  • 小问题---Linux Shell编程之while语句
  • 请教:在linux下如何为一个结构体分配空间?语句该怎么写?
  • . ./auto.func linux shell中的一个语句 不知道社么意思
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3