说明:本文为学习笔记,如有雷同,纯属意料之中😜
本篇文章主要介绍shell传递参数的方法以及shell的基本运算符,这些常用的需掌握。
在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……($0代表执行文件的文件名,$1,$2,$3…代表的是第几个参数) 向脚本传递参数用法,新建一个param.sh文件,编辑内容如下:
#!/bin/bash echo "shell 传递参数示例:" echo "执行的文件名:$0" echo "第一个参数:$1" echo "第二个参数:$2" echo "第三个参数:$3"执行的时候加上可执行权限,并且传递参数,执行结果如下:
输出结果如下:
算数运算符包含加减乘除,取余、赋值、相等、不相等。下面是常用算术运算符:
运算符说明+加法-减法*乘法/除法%取余=赋值==相等!=不相等下面举个例子:
#!/bin/bash echo "这是两数相加:`expr $1 + $2`" echo "这是两数相减:`expr $1 - $2`" echo "这是两数相乘:`expr $1 \* $2`" echo "这是两数相除:`expr $1 / $2`" echo "这是两数取余:`expr $1 % $2`" if [ $1 == $2 ] then echo "两数相等,都是$1" else echo "两数不相等" fi if [ $1 != $2 ] then echo "两数不相等" else echo "两数相等" fi运行结果如下: 注意: 1)表达式和运算符之间要有空格,例如$1-$2是不对的,必须写成$1 - $2 2)完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边 3)条件表达式要放在方括号之间,并且要有空格,例如:[ $1==$2 ]是错误的,必须写成 [ $1 == $2 ] 4)乘号“*”前边必须加反斜杠“\”才能实现乘法运算 5)if…then…else…fi 是条件语句
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。常用关系运算符如下:
运算符说明-eq判断两个数是否相等,相等就返回true-ne判断两个数是否不相等,不相等就返回true-gt判断左边的数是否大于右边的,如果是就返回true-lt判断左边的数是否小于右边的,如果是就返回true-ge判断左边的数是否大于等于右边的,如果是就返回true-le判断左边的数是否小于等于右边的,如果是就返回true下面举个例子:
if [ $1 -eq $2 ] then echo "1.eq输入的第一个数等于第二个数" else echo "1.eq输入的第一个数不等于第二个数" fi if [ $1 -ne $2 ] then echo "2.ne输入的第一个数不等于第二个数" else echo "2.ne输入的第一个数等于第二个数" fi if [ $1 -gt $2 ] then echo "3.gt输入的第一个大于第二个数" else echo "3.gt输入的第一个不大于第二个数" fi if [ $1 -lt $2 ] then echo "4.lt左边的数小于右边的数" else echo "4.lt左边的数大于右边的数" fi if [ $1 -ge $2 ] then echo "5.ge左边的数大于右边的数" else echo "5.ge左边的数小于右边的数" fi if [ $1 -le $2 ] then echo "6.le左边的数小于等于右边的数" else echo "6.le左边的数大于右边的数" fi传参输入16 22 运行结果如下:
常用布尔运算符如下:
运算符说明!非运算,表达式为true则返回false,佛则返回true-o或运算,有一个表达式为true则返回true-a与运算,两个表达式都为true才返回true if [ $1 != $2 ] then echo "非运算:$1 不等于 $2" else echo "非运算:$1 等于 $2" fi if [ $1 -lt $2 -o $1 -gt $2 ] then echo "或运算:其中一个表达式为true结果就是true" else echo "或运算:两个运算都是false" fi if [ $1 -lt 15 -a $2 -gt 15 ] then echo "与运算:两个表达式都为true才为true" else echo "与运算:两个表达式存在不为true的表达式" fi传参输入16 22,运行结果如下:
常用逻辑运算符如下:
运算符说明&&逻辑and,两个为真才为真-o逻辑or,一个为真就为真 if [[ $1 -le 10 && $2 -le 20 ]] then echo "逻辑and,都为真,返回true" else echo "逻辑and,存在不为真的项" fi if [[ $1 -ge 15 || $2 -ge 3 ]] then echo "逻辑or,表达式任意一个为真,就返回true" else echo "逻辑or,表达式中都为假,就返回true" fi传参输入 16 22,运行结果如下:
常用算数运算符如下:
运算符说明=判断两个字符串是否相等,相等就返回true!=判断两个字符串是否相等,不相等返回true-z判断字符串长度是否为0,为0返回true-n判断字符串长度是否不为0.不为0返回true$判断字符串是否为空,不为空返回true a="abc" b="efg" if [ $a = $b ] then echo "$a = $b:a等于b" else echo "$a = $b:a不等于b" fi if [ $a != $b ] then echo "a不等于b" else echo "a等于b" fi if [ -z $a ] then echo "字符串的长度为0" else echo "字符串长度不为0" fi if [ -n "$a" ] then echo "字符串长度不为0" else echo "字符串长度为0" fi运行结果如下:
文件测试运算符用于见测unix文件的属性,常见的如下:
运算符说明-b file检测文件是否是块设备文件,如果是,则返回 true-c file检测文件是否是字符设备文件,如果是,则返回 true-d file检测文件是否是目录,如果是,则返回 true-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true-g file检测文件是否设置了 SGID 位,如果是,则返回 true-k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true-p file检测文件是否是有名管道,如果是,则返回 true-u file检测文件是否设置了 SUID 位,如果是,则返回 true-r file检测文件是否可读,如果是,则返回 true-w file检测文件是否可写,如果是,则返回 true-x file检测文件是否可执行,如果是,则返回 true-s file检测文件是否为空(文件大小是否大于0),不为空返回 true-e file检测文件(包括目录)是否存在,如果是,则返回 true注意:file为文件的路径
file="test.sh" #该文件具有可读权限 if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi好啦,本次笔记先记到这里啦~学习是一个痛苦的过程,笔记还是要认真写滴,也要多加练习哦,还要继续加油鸭(ง •_•)ง