shell脚本:变量,文件判断,逻辑运算等纪要

时间:2023-03-08 17:36:00

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:判断字符串是否为空
[] :不用正则表达式的时候用单中括号
使用正则表达式时用双中括号[[]]
中括号中的变量最好加 “”