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:文件或目录是否存在

  • 相关阅读:
    #虚树,树形dp#CF613D Kingdom and its Cities
    #搜索,容斥#洛谷 2567 [SCOI2010]幸运数字
    #三分#洛谷 5931 [清华集训2015]灯泡
    windows中日期自动替换
    oracle的tablespaces使用情况监控
    k8s配置master运行pod
    redis配置数据持久化
    Centos7清理僵尸进程
    ZOJ 1078 Palindrom Numbers
    OCP 071【中文】考试题库(cuug整理)第33题
  • 原文地址:https://www.cnblogs.com/wuhuohanke/p/10102016.html
Copyright © 2011-2022 走看看