Linux学习笔记(共享内存 +⽂件锁 + 信号量 +Shell脚本编程 +云服务器⼊⻔)之信号量 +Shell脚本编程

信号量 

概念 

为了保证共享内存不会同时被多⼈修改从⽽造成不同步,⼀般使⽤信号量。 

示例 

     新建信号量 

         int semget(key_t key,int nsems,int semflg); 

     修改信号量的值 

----------------------- Page 7 -----------------------

       int semop(int sem_id,struct sembuf * sem_opa,size_t num_sem_ops); 

壳牌脚本编程 

简介 

外壳脚本,就是利⽤壳的命令解释的功能,对⼀个纯⽂本的⽂件进⾏解析,然后执⾏这些功能,也 

可以说壳牌脚本就是⼀系列命令的集合.Shell可以直接使⽤在赢/ Unix / Linux操作系统上⾯,并且可以调⽤ 

⼤量系统内部的功能来解释执⾏程序,如果熟练掌握外壳脚本,可以让我们操作计算机变得更加轻 

松,也会节省很多时间。 

应⽤场景 

    将囧些复杂的命令简单化(例如平时我们提交哉次Git代码可能需要很多步骤(git add。,git commit) 

    -m“”,git push),但是我们可以睿Shell简化成⼀步) 

    ⾃动打包,编译,发布等功能 

    完成快捷修改⽂件名,移动⽂件,清理磁盘中空⽂件夹等有技巧性的操作 

    总之⼀切有规律可循的任务都可以尝试⼀下shell脚本 

编写 

   #!/ bin / sh的 

   ... 

注:⾸⾏为#!/ bin / sh,指定脚本的默认解释器路径。 

运⾏⽅法 

    作为可执⾏的程序:将代码保存在.SH格式的⽂件内并直接调⽤执⾏ 

        chmod + x ./test.sh#使脚本具有执ο权限 

        ./test.sh#运蛾脚本Shell变量 

    作为解释器的参数:运搓解释器,参数为shell脚本的鹧件名 

       / bin / sh test.sh 

壳牌变量 

    定义变量 

    定义变量时,变量名不加美元符号($,PHP语⾔中变量需要) 

       HELLO ='你好世界!'; 

    注:等号两端不能有空格,否则被当成多个操作。 

----------------------- Page 8 -----------------------

        命名只能使⽤英⽂字⺟,数字和下划线,⾸个字符不能以数字开头。 

        中间不能有空格,可以使⽤下划线(_)。 

        不能使⽤标点符号。 

        不能使⽤庆典⾥的关键字。 

    查看变量 

    创建变量后,利睿set | grep可以查看set中的变量,例如: 

       设置| grep你好 

    删除变量 

    利崴unset可以删除变量,例如: 

       你好,你好 

    输出变量 

    有多种灵活的输出变量的⽅式: 

       echo $ {Hello} 

       echo $你好 

       echo $ {Hello:3:5}#从下标为3的字符输出5个字符 

       echo $ {Hello:3}#从下标为3的字符输出 

       echo $ set#展示所有变量 

       #参数的组合 

       ABC = “ABC” 

       DEF = “高清” 

       echo $ {ABC} $ {DEF} #abcdef 

       echo $ {ABC}'111'$ {DEF}#abc111def 

       #特殊的变量 

       $$#PID 

       $?#芥于查看上⼀个程序的退出状态,返回结果为0~255,0为成功,1~255为失败 

       $ ##参数个数 

       $ 0#当前伫件名称 

环境变量 

概念 

所有的程序,包括壳启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运⾏。 

必要的时候外壳脚本也可以定义环境变量。 

设置环境变量 

  1.在/ etc / pro fi le尼件中添加变量(对所有睿户セ效) 

  2.在睿户⽬录下的.bash_pro fi le⽂both增增变量(对单リ崴户セ效) 

  3.直接运导出命令定义变量(只对当前shell⽣效) 

----------------------- Page 9 -----------------------

输出环境变量 

使崴env可以查看所有环境变量 

Shell测试命令 

⽤处 

Shell中的test命令⽤于检查某个条件是否成⽴,它可以进镐数值,字符和愧件三个⽅的的测试。 

写法 

 测试条件或[条件],可以兑换$?如果判断,请查看返回值或者。 

数值测试 

  参数说明 

  -eq等于则为真 

  -ne不等于则为真 

  -gt茫于则为真 

  -ge譬于等于则为真 

  -lt⼩于则为真 

  -le⼩于等于则为真 

字符串测试 

  参数说明 

  =等于则为真 

  !=不相等则为真 

  -z字符串字符串的⻓度为零则为真 

  -n字符串字符串的⻓度不为零则为真 

壳牌流程控制 

如果 

----------------------- Page 10 -----------------------

       如果条件 

       然后 

               命令1 

               命令2 

               ... 

               commandN 

       科幻 

如果别的 

       如果条件 

       然后 

               命令1 

               命令2 

               ... 

               commandN 

       其他 

               命令 

       科幻 

if else-if else 

       如果条件1 

       然后 

               命令1 

       elif条件2 

       然后 

               命令2 

       其他 

               commandN 

       科幻 

对于 

与其他编程语⾔类似,壳牌⽀持的循环。 

对于循环⼀般格式为: 

       for item in item1 item2 ... itemN 

       做 

               命令1 

               命令2 

               ... 

               commandN 

       DONE 

而 

----------------------- Page 11 -----------------------

而循环⽤于不断执⾏⼀系列命令,也⽤于从输⼊⽂件中读取数据;命令通常为测试条件其格式 

为: 

   条件 

   做 

       命令 

   DONE 

直到循环 

直到循环执列系列命令直条条件为真时停⽌。 

直到循环与而循环在处理ACS式上刚好相反。 

⼀般而循环优于直到循环,但在某些时候 - 也只是极少数情况下,直到循环更加有睿。 

直到语法格式: 

   直到条件 

   做 

       命令 

   DONE 

案件 

Shell case语句为多选择语句。可以⽤case语句匹配⼀个值与⼀个模式,如果匹配成功,执驭相匹配 

的命令。病例语句格式如下: 

   案例值 

   模式1) 

       命令1 

       命令2 

       ... 

       commandN 

       ;; 

   模式2) 

       命令1 

       命令2 

       ... 

       commandN 

       ;; 

   ESAC 

壳包括 

和其他语⾔⼀样,Shell也可以包含外部脚本。这样可以很螃便的封装⼀公公代⽴⽴⽴⽴⽴⽴⽴⽴ 

⽂件。 

Shell⽂包包含的语法格式如下: 

----------------------- Page 12 -----------------------

   。filename#注意点号(。)和鹧件名中间有⼀空格 

   #或 

   源文件名 

Shell I / O. 

  回声 

    输出到stdout标准输出流。 

  读 

    读芨⾃stdin标准输ค流。 

  猫 

    ⽂件查看,连接,创建,追加。 

  4. | 

    利崴“|”符号连接,连续输出多个命令的执⾏结果。 

  发球 

    读取标准输⼊的内容,并将其内容输出成⽂件。 

壳牌函数 

Shell可以睿户定义函数,然后在shell脚本中可以随便调睿。 

壳牌中函数的定义格式如下: 

   [功能] funname [()] 

   { 

       行动; 

       [return int;] 

   } 

说明: 

    可以带函数fun()定义,也可以直接fun()定义,不带任何参数。 

    参数返回,可以显示加回返回,如果不加,将以最后⼀条命令运⾏结果,作为返回值。 

    返回后跟数值N(0-255) 

 

本篇非作者所著:来自一位大神!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值