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是空格敏感的 ...
随机推荐
- 多重背包(dp专题)
题目大意:输入n,代表有n种数,接下来n个数代表n种数,再接下来n个数代表每种数有多少个,在输入K,代表用这些数要加成的和 问你是否能加为K,能输出yes,不能输出no 这是一个典型的多重背包问题,可 ...
- select 下拉框的复选
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdUAAAFSCAIAAAArbtLAAAAgAElEQVR4nOydd1gUWaK3Z2/YvXd3v7 ...
- Docker for mac 安装 kong
首先安装一个 PostgreSQL,选的版本是 9.5 $ docker run -d --name kong-database \ -p : \ -e "POSTGRES_USER=kon ...
- jquery进阶(1)
今天我们接着来学习jQuery中的内容,包括css的操作.尺寸的操作.文档的操作.动画(有待补充),事件处理操作. 一.CSS 在css中可以设置css的基本属性 - .css("color ...
- AI software can catch shoplifters before they steal
日本研发出智能软件 不等下手就能识别小偷 AI software can catch shoplifters before they steal 在汤姆·克鲁斯主演的电影<少数派报告>中, ...
- cron 任务执行表达式
1.来源 开始我还不知道cron到底来源于哪里,不求甚解的我也没做过多了解,现在突然用到所以写一下. cron计划任务 其实只是linux 一个执行计划的一个工具或者执行程序. 在Linux系统中, ...
- c语言数据结构:用标志位实现循环队列
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 10//定义队列长度 ;//定义标志位 typedef struct ...
- C#执行异步操作的几种方式比较和总结(转发:https://www.cnblogs.com/durow/p/4826653.html)
0x00 引言 之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理.对XxxxxAsync()之类的方法也没去了解过,倒也没遇到什么大问题.最近因为需求要求 ...
- Java反序列化漏洞详解
Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具.本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进 ...
- 美国L1签证申请的常见问题解析
美国L1是一种允许在美国和中国都有机构的跨国公司从国外的母公司派遣一定层次的经理或专业技术人员去美国分支机构工作的非移民签证.L1签证分两类:美国L1A是跨国公司经理及主管人员签证,L1B是专门技术人 ...