zoukankan      html  css  js  c++  java
  • Shell脚本学习

    继续shell脚本学习。上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作。

    运算符

    bash不支持简单的数学计算,需要依赖其他命令实现。

    expr可以代为实现。

    # 表达式一般这么写
    `expr 4 + 4`

    注意点:

    1. 引号不是普通单引号,是右斜的引号,在esc键下方。表达式用这种右斜的引号括起来,必须成对出现

    2. 运算符两边要留空格。4+4不行,必须写成4 + 4

    运算符不用多说,和其余编程语言类似。加减乘除取余:+-*/%

    赋值用=,比较相等用==,比较不等用!=

    特别注意的是*要在前面加反斜杠,写成*

    还有就是看到教程中有特别指出的一点:

    在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "" 

    关系运算符

    关系运算符只支持数字,或者值为纯数字的字符串

    相等:-eq

    不等:-ne

    大于:-gt

    小于:-lt

    大于等于:-ge

    小于等于:-le

    布尔运算符

    非:!

    或:-o

    与:-a

    逻辑运算符

    逻辑与:&&

    逻辑或:||

    字符串运算符

    比较两个字符串是否相等:=

    比较不等:!=

    判断字符串长度是否为0:-z  [-z $a]

    判断字符串长度是否非0:-n  [-n "&a"]

    判断字符串是否为空:[$a]

    文件测试运算符

    用于检测Unix文件的各种属性

    -b file:是否为块设备文件

    -c file:是否为字符设备文件

    -d file:是否为目录

    -f file:是否是普通文件

    -g file:是否设置了SGID位

    SGID的解释:

    SGID是获得该程序所属用户组的权限。SGID主要用在目录上

    -k file:是否设置了粘着位(Sticky Bit)

    SBIT的解释:

    若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作(因为普通用户对目录具有w权限),包括其它用户建立的目录/文件;但若赋了SBIT,则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录!

    -p file:是否为有名管道

    -u file:是否设置了SUID位

    SUID的解释:

    让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源

    -r file:是否可读

    -w file:是否可写

    -x file:是否可执行

    -s file:是否文件为空

    -e file:文件或目录是否存在

  • 相关阅读:
    Go中的interface学习
    Go中的命名规范
    Go中的结构体
    Go中的文件读写
    Go包管理工具dep
    SpringBoot中读取配置文件的几种方式
    Go标准库--net/http学习
    centos7通过yum安装docker
    scala之构造器详解
    解决!!-- krb5-libs.x86_64被卸载,yum不能使用,ssh不能连接
  • 原文地址:https://www.cnblogs.com/wuhuohanke/p/10102016.html
Copyright © 2011-2022 走看看