shell脚本

位置变量

bash script.sh arg1 arg2

$1,$2  对应第一个、第二个(arg1 arg2)等参数shift [n]换位置

$0  命令本身,包括路径

$*  传给脚本的所有参数,全部参数合为一个字符串

$@  传递给脚本的所有参数,每个参数为独立字符串

$#  传递给脚本的参数个数

注意:  $@和$*  只在被双引号包起来的时候才会有差异

清空所有位置

set --

 

shell条件测试符
算术运算符
+ 加法 `expr $a + $b` 结果为 30。
- 减法 `expr $a - $b` 结果为 -10。
* 乘法 `expr $a \* $b` 结果为 200。
/ 除法 `expr $b / $a` 结果为 2。
% 取余 `expr $b % $a` 结果为 0。
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。 
!= 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
 
算术运算
let var=2+3 
let sum+=i   let sum=sum+i
((i=2*3))
expr 2 \* 3
bc
for ((i=0;i<10;i=i+1));do
    echo i=$i
done

 

关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
整数比较
-eq 等于,如:if [ "$a" -eq "$b" ] 
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
 
多重条件判断
'判断1 -a 判断2'
逻辑与,判断1和判断2都成立,最终的结果才为真
'判断1 -o 判断2'
逻辑或,判断1和判断2有一个成立,最终的结果就为真
'!判断'
逻辑非,使原始的判断式取反
aa=11
[ -n "$aa" -a "$aa" -gt 23 ] &&echo "yes" || echo "no"
判断变量aa是否有值,同时判断变量aa是否大于23
因为变量aa的值不大于23,所以虽然第一个判断值为真,返回的结果也是假

 

条件测试操作
1,测试文件状态
格式:[  操作符  文件或目录  ]
2,常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File) 
-r:测试当前用户是否有权限读取(Read) 
-s : 文件存在且不为空,为真 
-w:测试当前用户是否有权限写入(Write) 
-x:测试当前用户是否可执行(Excute)该文件 
-L:测试是否为符号连接(Link)文件 
-z:字符串内容为空为真。 
-n : 字符串内容不为空为真。 
-c : 判断是不是设备文件. 
-t: fd 文件描述符是否在某终端已经打开
-N: 文件自从上一次被读取之后是否被修改过
-O: 当前有效用户是否文件属主
-G: 当前有效用户是否为文件属组
FILE1 -ef FILE2 #FILE1是否是FILE2的硬链接
FILE1 -ef FILE2 #FILE1是否新于FILE2(mtime)
FILE1 -ot FILE2 #FILE1是否旧于FILE2
 
大于 -gt (greater than) 
小于 -lt (less than) 
大于或等于 -ge (greater than or equal) 
小于或等于 -le (less than or equal) 
不相等 -ne (not equal) 
! : 取非

 

 
shell 判断变量中是否包含某个字符串
=~ 左侧字符串是否能够被右侧正则表达式所匹配
建议: 当使用正则表达式或通配符使用双中括号[[ ]],其他一般使用[]
str="this is a string"
[[ $str =~ "this" ]] && echo "$str contains this"
[[ $str =~ "that" ]] || echo "$str does NOT contain that"
 
结果为:
this is a string contains this
this is a string does NOT contains that
[[" 判断命令和 "=~"正则式匹配符号

 

 

 

posted on 2021-10-10 09:13  Colin88  阅读(32)  评论(0编辑  收藏  举报