shell整理
来源:互联网 发布:淘宝商城托管 编辑:程序博客网 时间:2024/05/16 11:53
- 运算符
- 1 算数运算符
- 用法
- 参数
- 注意
- demo
- 2 整数关系运算符
- 用法
- 参数
- demo
- 3 字符串
- 参数
- demo
- 4 文件
- 说明
- demo
- 5 布尔运算符
- 说明
- demo
- 6 逻辑运算
- 说明
- demo
- 1 算数运算符
- 流程控制
- 1 分支
- 11 单分支
- 12 双分支
- 1 分支
- 函数
- 1 定义
- 说明
- 2 调用
- 3 函数传参
- 1 定义
- 特殊字符
- demo
- 运算符
1. 运算符
1.1 算数运算符
用法
参数
+
加 -
减 *
乘 /
除 %
取模 =
赋值 !=
不等 ==
等于注意
条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b]
是错误的,必须写成 [ $a == $b ]
。
demo
# expr 只能计算整数xiaox@xiaox:~/study/shell$ echo `expr 1.1 + 1.0`expr: 非整数参数xiaox@xiaox:~/study/shell$ echo `expr 1 + 1`2# bc 能计算整数和小数xiaox@xiaox:~/study/shell$ echo "1 + 2"|bc3xiaox@xiaox:~/study/shell$ echo "1.1 + 2"|bc3.1# 赋值不能有空格xiaox@xiaox:~/study/shell$ a = 1a:未找到命令xiaox@xiaox:~/study/shell$ a=1# 中括号内侧要有空格 xiaox@xiaox:~/study/shell$ [1 == 2] && echo 1 || echo 0[1:未找到命令0xiaox@xiaox:~/study/shell$ [ 1 == 2 ] && echo 1 || echo 00# 此处注意,等号两侧要有空格,猜测将"1==2"当做了一个不为null的字符串,返回1xiaox@xiaox:~/study/shell$ [ 1==2 ] && echo 1 || echo 01# 针对上例的一个小测试,猜测是对的xiaox@xiaox:~/study/shell$ a=1==2xiaox@xiaox:~/study/shell$ echo $a1==2
1.2 整数关系运算符
用法
在[]
中或与test
一起使用
参数
demo
# 相等xiaox@xiaox:~/study/shell/menu$ test 1 -eq 2 && echo 1 || echo 00xiaox@xiaox:~/study/shell/menu$ test 1 -eq 1 && echo 1 || echo 01# 小于xiaox@xiaox:~/study/shell/menu$ test 1 -lt 0 && echo 1 || echo 00xiaox@xiaox:~/study/shell/menu$ test 0 -lt 1 && echo 1 || echo 01# 小于等于xiaox@xiaox:~/study/shell/menu$ test 0 -le 1 && echo 1 || echo 01xiaox@xiaox:~/study/shell/menu$ test 0 -le 0 && echo 1 || echo 01xiaox@xiaox:~/study/shell/menu$ test 1 -le 0 && echo 1 || echo 00# 大于xiaox@xiaox:~/study/shell/menu$ test 1 -gt 0 && echo 1 || echo 01xiaox@xiaox:~/study/shell/menu$ test 0 -gt 1 && echo 1 || echo 00# 大于等于xiaox@xiaox:~/study/shell/menu$ test 1 -ge 0 && echo 1 || echo 01xiaox@xiaox:~/study/shell/menu$ test 1 -ge 1 && echo 1 || echo 01xiaox@xiaox:~/study/shell/menu$ test 0 -ge 1 && echo 1 || echo 00# 在[]中使用, 与test相似xiaox@xiaox:~/study/shell/menu$ [ 0 -eq 1 ] && echo 1 || echo 00xiaox@xiaox:~/study/shell/menu$ [ 0 -eq 0 ] && echo 1 || echo 01
1.3 字符串
参数
=
相等返回True !=
不等返回True -z
长度为0返回True -n
长度不为0返回True str
字符串不为空返回Truedemo
# =xiaox@xiaox:~$ [ "a" = "a" ] && echo 1 || echo 01xiaox@xiaox:~$ [ "a" = "b" ] && echo 1 || echo 00# !=xiaox@xiaox:~$ [ "a" != "a" ] && echo 1 || echo 00xiaox@xiaox:~$ [ "a" != "b" ] && echo 1 || echo 01# -zxiaox@xiaox:~$ [ -z "" ] && echo 1 || echo 01xiaox@xiaox:~$ [ -z "a" ] && echo 1 || echo 00# -nxiaox@xiaox:~$ [ -n "" ] && echo 1 || echo 00xiaox@xiaox:~$ [ -n "a" ] && echo 1 || echo 01# strxiaox@xiaox:~$ unset axiaox@xiaox:~$ echo $axiaox@xiaox:~$ [ "$a" ] && echo 1 || echo 00xiaox@xiaox:~$ a="a"xiaox@xiaox:~$ [ "$a" ] && echo 1 || echo 01xiaox@xiaox:~$
1.4 文件
说明
demo
# -dxiaox@xiaox:~/study$ test -d shell && echo 1 || echo 01xiaox@xiaox:~/study$ touch myfilexiaox@xiaox:~/study$ test -d myfile && echo 1 || echo 00# -fxiaox@xiaox:~/study$ test -f myfile && echo 1 || echo 01xiaox@xiaox:~/study$ test -f shell && echo 1 || echo 00# -rxiaox@xiaox:~/study$ ll总用量 12drwxrwxr-x 3 xiaox xiaox 4096 10月 29 14:01 ./drwxr-xr-x 21 xiaox xiaox 4096 10月 29 12:05 ../-rw-rw-r-- 1 xiaox xiaox 0 10月 29 14:01 myfiledrwxrwxr-x 3 xiaox xiaox 4096 10月 29 12:05 shell/xiaox@xiaox:~/study$ test -r shell && echo 1 || echo 01xiaox@xiaox:~/study$ chmod -r myfile xiaox@xiaox:~/study$ ll总用量 12drwxrwxr-x 3 xiaox xiaox 4096 10月 29 14:01 ./drwxr-xr-x 21 xiaox xiaox 4096 10月 29 12:05 ../--w--w---- 1 xiaox xiaox 0 10月 29 14:01 myfiledrwxrwxr-x 3 xiaox xiaox 4096 10月 29 12:05 shell/xiaox@xiaox:~/study$ test -r myfile && echo 1 || echo 00# -w# -x# -sxiaox@xiaox:~/study$ clearxiaox@xiaox:~/study$ ll总用量 12drwxrwxr-x 3 xiaox xiaox 4096 10月 29 14:01 ./drwxr-xr-x 21 xiaox xiaox 4096 10月 29 12:05 ../--w--w---- 1 xiaox xiaox 0 10月 29 14:01 myfiledrwxrwxr-x 3 xiaox xiaox 4096 10月 29 12:05 shell/xiaox@xiaox:~/study$ test -s myfile && echo 1 || echo 00xiaox@xiaox:~/study$ echo "text" >> myfile xiaox@xiaox:~/study$ ll总用量 16drwxrwxr-x 3 xiaox xiaox 4096 10月 29 14:01 ./drwxr-xr-x 21 xiaox xiaox 4096 10月 29 12:05 ../-rw-rw-r-- 1 xiaox xiaox 5 10月 29 14:08 myfiledrwxrwxr-x 3 xiaox xiaox 4096 10月 29 12:05 shell/xiaox@xiaox:~/study$ test -s myfile && echo 1 || echo 01# -exiaox@xiaox:~/study$ test -e myfile && echo 1 || echo 01
1.5 布尔运算符
说明
在test或[]中使用
!
非 -o
或 -a
与demo
# !xiaox@xiaox:~/study$ [ ! 1 -eq 1 ] && echo 1 || echo 00xiaox@xiaox:~/study$ [ 1 -eq 1 ] && echo 1 || echo 01# -oxiaox@xiaox:~/study$ [ 1 -eq 1 -o 1 -eq 0 ] && echo 1 || echo 01# -axiaox@xiaox:~/study$ [ 1 -eq 1 -a 1 -eq 0 ] && echo 1 || echo 00
1.6 逻辑运算
说明
在[[]]
中使用
&&
逻辑与 ` demo
# ||xiaox@xiaox:~/study$ [[ 1 -eq 1 || 1 -eq 0 ]] && echo 1 || echo 01# &&xiaox@xiaox:~/study$ [[ 1 -eq 1 && 1 -eq 0 ]] && echo 1 || echo 00
2. 流程控制
2.1 分支
2.1.1 单分支
# 第一种写法if [ 条件 ] thenfi# 第二种写法if [ 条件 ]; thenfi
2.1.2 双分支
if 条件1 then 指令1elif 条件2 then 指令2else 指令3fi
3. 函数
3.1 定义
[ function ] funname [()]{ action; [return int;]}
说明
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
3.2 调用
# 只用函数名,不用括号,定义函数必须在调用函数的前面funname
3.3 函数传参
传参方式和脚本一致,只是参数名换成脚本名
# 使用funname 1 2 3# 函数内部使用$1,$2...唯一注意的是$0取的是脚本名
4. 特殊字符
$#
传递到脚本参数的个数 $*
以一个单字符串显示所有向脚本传递的参数 $$
脚本运行的当前ID号 $!
后台运行的最后一个进程的ID号 $@
与$*相同,但是使用时加引号,并在引号中返回每个参数。 $-
显示shell使用的当前选项,与set命令功能相同 $?
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。demo
参考:
Linux命令大全
阅读全文
0 0
- shell整理
- shell 整理
- shell整理
- shell整理
- shell 编程汇总整理
- shell 概述(转载+整理)
- Shell命令行操作--整理
- Shell常用命令整理
- shell正则表达式整理
- shell基础整理
- shell基础整理
- 整理shell基础
- shell 基础整理
- shell 特殊变量 整理
- shell学习整理
- Linux Shell编程整理
- shell常用命令整理
- shell 资源整理
- 百练习+MST是否唯一+Kruskal+去除边然后枚举
- Ehcache缓存
- pdf转cad最好的软件如何选择免费
- Spring 源码深入解析之bean容器的基本实现(一)
- 工作中用到的知识点--tomcat开机启动配置和nginx日志切割
- shell整理
- rebot 汇聚多个output.xml文件时 失败的解决方案
- Docker Swarm 入门
- [译] ConstraintLayout 可视化[Design]编辑器(这到底是什么)[第四部分]
- MySQL 第九篇:Mysql 与 ORACLE 开发差异、Mysql 优化
- 动态规划(DP)——斜率优化
- 对于ESP、EBP寄存器的理解
- 如何在tensorflow程序中对梯度进行反转
- htnl多个空格