shell脚本:变量,文件判断,逻辑运算等纪要
shell脚本中的变量定义,引用各有不同的方式,除此之外,很常用的有文件属性判断,逻辑运算,数值运算等,下面记录一下它们的属性作用
变量
shell变量的定义分为两种:一种是直接赋值定义,另一种是嵌套指令调用赋值: name=yufu : 直接定义赋值 time=`date` : 指令嵌套赋值 $name $time : 调用变量 此外变量还分局部变量和全局变量,局部变量只对当前bash环境有效,环境变量全局有效,上面的定义方式是定义局部变量,全局变量定义方式如下 name=yufu expor name env | grep name :查看环境变量 unset name :取消环境变量
位置变量与状态变量
$1 $2 $3 ... $9 : 从标准输入接收参数
${10} : 十个以上参数要用花括号把数值括起来
$* :所有参数: 在脚本间调用时当成一个参数调用
$@ :等于$*作用 :在脚本间调用时可以分开调用参数
$# :参数个数
$0:显示脚本名称
set -- :清空位置参数
shift :参数默认向左移动一位,可指定数字
$? :指令执行状态值 。0或者非0值
数值运算方式
x=1
y=2
z=$[x+y] 或 let z=x+y 或者 z=$((x+y))
逻辑判断
真,假
逻辑运算:
与运算:
真 && 真 = 真
真 && 假 = 假
假 && 真 = 假
假 && 假 = 假
或运算:
真 || 真 = 真
真 || 假 = 真
假 || 真 = 真
假 || 假 = 假
非运算:
! 真 = 假
! 假 = 真
逻辑与
cmd1 && cmd2
如果cmd1为假,cmd2不需要执行,如果cmd1为真,cmd2要执行
逻辑或
cmd1 || cmd2
如果cmd1为假,那么要执行cmd2如果为真,那么cmd2不用执行
布尔运算 数值方式 true, false
1 0
与:
1 与 1 = 1
1 与 0 = 0
0 与 1 = 0
0 与 0 = 0
或:
1 或 1 = 1
1 或 0 = 1
0 或 1 = 1
0 或 0 = 0 换种方式 真,假 与运算:
真 && 真 = 真
真 && 假 = 假
假 && 真 = 假
假 && 假 = 假
或运算:
真 || 真 = 真
真 || 假 = 真
假 || 真 = 真
假 || 假 = 假
非运算:
! 真 = 假
! 假 = 真
逻辑运算的一个例子
[root@yufu ~]# id yufu &> /dev/null && echo "user exist" || useradd yufu
user exist
#在使用 与或 逻辑运算过程中,如果如果前面的指令执行正确才会执行后面的与运算指令,如果前面的指令执行失败(状态值为非0)则后面的与运算不会执行,跳过执行 或运算指令
#如果或运算在前面,规则则相反
[root@yufu ~]# [ -d /tmp/hhh ] || mkdir /tmp/hhh
条件判断
条件判断 test :
状态值 0 为真 或 1为假 test $str1 = $str2
或 (常用) [ $str1 = $str2 ] 中括号前后要有空格 (常用)[ -z $var ] :判断是否为空,可以判断文件属性
文件判断
-a: 文件是否存在
-d:是否是文件夹
-f:文件是否存在
-l:是否是软连接
-w:是否有写权限
-x:是否有执行权限
-v:变量是否被设置了
-o:或者,多条件判断
-n:变量是否为空
-z:判断字符串是否为空
[] :不用正则表达式的时候用单中括号
使用正则表达式时用双中括号[[]]
中括号中的变量最好加 “”
shell脚本:变量,文件判断,逻辑运算等纪要的更多相关文章
- Shell脚本变量与判断
变量 环境变量 局部变量 declare 定义变量类型 本地变量 local 在函数中使用 变量类型: 数值型: 1.整形 2.浮点型 3.布尔型 0 1 (真 假) (true false) 字符串 ...
- Shell脚本IF条件判断和判断条件总结
转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结 ...
- (转)shell脚本之文件测试操作符及整数比较符
shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...
- shell 脚本大文件处理
shell 脚本大文件处理 字符串处理 s='{"_id":{"$oid":"59b73d80930c17474f9f050d"},&qu ...
- shell脚本中文件测试
shell脚本中文件测试 author:headsen chen 2017-10-17 14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f filename ] ...
- Shell脚本统计文件行数
Shell脚本统计文件行数 转自 http://www.jb51.net/article/61943.htm 示例:row_count.sh文件 awk '{print NR}' row_cou ...
- Shell脚本实现文件遍历和删除操作
本文需要实现的功能如下:某文件夹下具有由按数字编号命名的文件夹,需要删除除最大编码外的文件. 具体实现 大致思路:循环遍历该文件夹下所有文件,正则匹配出最大编码文件:然后循环文件,删除除最大编码外的文 ...
- shell脚本之文件测试表达式
1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...
- shell脚本实现文件的自动上传以及下载 scp sftp lftp 还有expect命令
转至: 最近需求要求定期从一个[定期更新的文件] 中解析员工信息 ,插入到数据库中. 按理来说很简单, 无非就是io流读文件,然后crud balalalala..... 其实不是的, 我我写的这个 ...
- shell脚本变量
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 ...
随机推荐
- P2161 [SHOI2009]会场预约 (线段树:线段树上的不重复覆盖数)
题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...
- PIE使IE浏览器支持CSS3属性(圆角、阴影、渐变)
http://www.360doc.com/content/12/1214/09/11181348_253939277.shtml PIE使IE浏览器支持CSS3属性(圆角.阴影.渐变) 2012-1 ...
- Ubuntu批量修改文件后缀
rename 's/\.JPG/.jpg/' *.JPG 把JPG后缀改为jpg 参考url====http://blog.csdn.net/whuslei/article/details/67249 ...
- UnityError AnimationEvent 'NewEvent' has no receiver! Are you missing a component?
- (转)KICKSTART无人值守安装
KICKSTART无人值守安装 导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装 ...
- JSP标签和JSTL标签注意点
1.转发和重定向问题 当前项目:/Test 转发路径:"/"根目录表示当前项目"/Test","/login.jsp"就是"/Te ...
- Oracle权限管理
一)用户Oracle中的用户分为二大类1)Oracle数据库服务器创建时,由系统自动创建的用户,叫系统用户,如sys.2)利用系统用户创建的用户,叫普通用户,如scott,hr,c##tiger,zh ...
- PHP 中获取文件名及路径
1. basename("/mnt/img/image01.jpg")函数:得到文件名;输出结果为:image01.jpg. 使用 basename($uriString) 我们可 ...
- vue地址插件多级联动自适应 + github地址
https://github.com/cqzyl/vue-manyAddress
- javascript设计模式之中介者模式
/* * 小游戏演示中介者模式 * Home 按键 1 * Guest 按键 0 * 半分钟内看谁按下的次数多 * * 参与的对象: * 玩家 * 计分板 * 中介者 * * 中介者模式使对象之间松耦 ...