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是空格敏感的 ...
随机推荐
- Uva1608
如果一个序列的所有子序列中均存在至少一个元素,这个元素在该子序列中只出现一次,则这个序列non-boring. 当一个序列[x,y]中没有元素只出现一次,那么该序列不符合要求,如果有的话,设为第i个元 ...
- hutool java工具架包功能介绍
https://blog.csdn.net/lx1309244704/article/details/76459718
- Linux中vim编辑器的总结
vi( Visual Interface ) vim( VI iMproveed ):为纯文本(ASCII)全屏编辑器,也是模式化编辑器. vim的三种模式: 1)编辑模式(命令模式) 2)输入模式 ...
- 牛客网Java刷题知识点之构造函数是什么、一般函数和构造函数什么区别呢、构造函数的重载、构造函数的内存图解
不多说,直接上干货! 构造函数是什么? 构建创造对象时调用的函数. 构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员变量. 注意: 创建对象都必须要通过构造函数初始化. 构造函数的特点 ...
- Oracle 取上周一到周末的sql
-- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20131005','yyyymmdd'),'d') from dual; --结果:7 注释:20 ...
- 用汇编实现add函数
平台 macOS 工具 nasm clang 文件 main.c #include <stdio.h> int add(int a, int b); int main() { printf ...
- Invoke PowerShell by UiPath
UiPath能够调用PowerShell ,最近在项目中得到了实践: 需求: 某系统生成的日志文件的名字,时间戳只到分,形如bz20180214_1655.log 这样在如果在1分钟内生成多个 ...
- window.location获取url各项参数详解
window.location方法后还还可以带href,search等参数,下面我们来看看获取url各项参数的办法. URL即:统一资源定位符 (Uniform Resource Locator, U ...
- SpringMVC07SelfException 自定义异常
1.配置web.xml文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3// ...
- 什么是SpringBoot
随着动态语言的流行(Ruby,Groovy,Scala,Node.js),Java的开发显得格外的笨重;繁多的配置,低下的开发效率,复杂的部署流程以及第三方技术集成难度大. 在上述环境 下,Sprin ...