浅谈shell脚本中的控制流结构
习惯了c/c++的编程环境,再转到shell编程上,总有那么一点陌生的感觉。
shell中一般的if-then-else函数格式无外乎如下:
if 条件1 then 命令1 elif 条件2 then命令2 else 命令3 fi
而linux中
若命令退出状态为0,则退出成功,无错误;
若退出状态为1,则退出失败,某处有错误。
if-then-else-函数中,条件1为条件测试,若条件1返回为0,表示测试为真,执行命令1;反之,返回1,则执行elif。
亦即以条件是否测试成功为if的判断标准,而不是以返回值为标准。
这点与c/c++有点不同,稍不注意就会弄错。
更多信息请参见:
《Linux与Unix_shell编程指南》18.3
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Linux中查看指定文件夹内各个子文件夹内的文件数量
count脚本 #!/bin/sh numOfArgs=$# if [ $numOfArgs -ne 1 ]; then echo -e "Usage: \nbash $0 dirForCount" exit -1 fi # args ROOTDIR=$1 # core part find $ROOTDIR -maxdepth 1 -type d | sort | while read dir; do count=$(find "$dir" -type f | wc
-
Linux更改账户密码实例详解
更改个人账户密码 普通用户想要更改自己的个人帐户密码,只需要运行passwd命令,不用带任何其他的命令: $ passwd 示例输出: Changing password for nick (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 系统将提示我们需要先输入当前密码,如果密码正确,则会要求重新输入并确认新密码.在下
-
Linux下误删messages文件的找回方法
如果有进程正在使用的文件,如果被误删了,可以找回.如果没有进程在使用,就无法找回被误删的文件了. 假如/var/log/messages文件被误删了: 1.查询正在使用该文件的进程. [root@www]# lsof |grep message rsyslogd 1717 root 1w REG 8,2 243321 654968 /var/log/messages 2.根据查询结果,是PID为1717的进程正在使用该文件.进入该进程/proc下的目录/proc/1717/fd: [root@w
-
Linux常见问题解决方案汇总
1.VMware下的Centos7联网并设置固定ip 1).首先右击虚拟镜像名,点击"设置" 2).打开终端,查看网络 3).使用root用户编辑此文件 4).重启网卡,查看网络 5).再编辑一下之前编辑的文件 [root@nginx ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 #IPADDRO和PREFIXO如上图,GATWAYO和DNS1只需要把IPADDRO最后改为1 IPADDRO=192.168.126.136 PREF
-
Linux Shell 生成随机数和随机字符串的方法示例
日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).实际上,伪随机数和理想随机数也是相对的概念,例如伪随机数在1万万亿亿亿年内也无法重复,算是理想随机数么? 伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产生算法将可以产生一个非常长的不重复的序列,例如 UUID
-
pyqt远程批量执行Linux命令程序的方法
写了个小程序: 功能 1.测试远程ssh连接是否成功, 2.批量执行远程ssh命令 效果如下: 代码如下: #-*- coding:utf-8 -*- import sys from PyQt4 import QtCore, QtGui, uic import locale import re import os from PyQt4.QtCore import * from PyQt4.QtGui import * import paramiko qtCreatorFile = "test.u
-
Linux加载vmlinux调试
使用gdb加载内核符号表 arm-eabi-gdb out/target/product/msm8625/obj/KERNEL_OBJ/vmlinux 在内核的.config里面要打开 DEBUG_INFO和DEBUG_VM 定位故障代码 (gdb) l * qrd7627a_add_io_devices+0x100 0xc07cd05c is in qrd7627a_add_io_devices (/home/yejialong/GH700C/kernel/arch/arm/mach-msm/
-
Linux shell环境下Zabbix Api的使用
在linux shell环境下直接调用就可以,根据官网所述:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌.这可以使用该 user.login 方法完成. [root@localhost ~]# curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"user.login","params
-
Linux外围文件系统的定制方法
前言 一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版.为了掌握Linux操作系统的使用,了解 Linux操作系统的运作过程,理解内核与外围支撑系统的关系,加深对开源操作系统的认识,我决定造个轮子--自己定制一个Linux文件系统. 这里有两种实现方法: 直接自己实现init**\*(M1)*** 加载bios 的硬件信息-> 读取MBR –>执行Grub ->加载kernel–> 加载驱动–> init –&g
-
Linux内核宏container_of的深度剖析
1.前面说的 我在好几年前读linux 驱动代码的时候看到这个宏,百度了好久,知道怎么用了,但是对实现过程和原理还是一知半解. container_of宏 在linux内核代码里面使用次数非常非常多,对于喜欢linux编程的同学来说,了解其实现方法,对以后看内核代码,写内核驱动的帮助都非常大,当然,我不是说了解这个就可以为所欲为了,内核博大精深,先宏观再微观去学习,不积跬步何以致千里,不要想着一口就能吃成一个胖子,我这篇文章主要剖析一下这个函数的实现原理,希望对大家学习过程中有所帮助. andr
随机推荐
- spring-boot集成spring-security的oauth2实现github登录网站的示例
- jquery中的事件处理详细介绍
- vue滚动轴插件better-scroll使用详解
- Java中replace、replaceAll和replaceFirst函数的用法小结
- java实现文件导入导出
- js实现简单的获取验证码按钮效果
- ASP数据岛操作类
- C++类型转换运算符的实例详解
- MySQL存储引擎 InnoDB与MyISAM的区别
- JS中判断JSON数据是否存在某字段的方法
- 微信公众号菜单配置微信小程序实例详解
- HTML页面登录时的JS验证方法
- jQuery插件分享之分页插件jqPagination
- JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
- 菜鸟必读之网络故障两例
- linux下安装nodejs的详细步骤
- MyBatis如何使用(三)
- PHP rawurlencode与urlencode函数的深入分析
- php文件上传的两种实现方法
- javaScript之split与join的区别(详解)