shell脚本编程

  • 魔数
    通常用来写在脚本文件的顶部,用来区别普通的文本文件,且指定了脚本文件的解释器编译器等。比如shell文件的第一行要写上 #!/bin/bash 。

  • 变量
    shell中变量分为:
    ①、本地变量:指当前打开的bash进程创建和使用的变量,在bash中直接通过:VARNAME=VALUE声明创建即可,引用的时候使用$VARNAME。局部变量是其一个子集(执行的脚本文件中创建的变量,脚本文件执行完成后,其中的变量自动清除)
    ②、环境变量:bash及其进程中打开的子bash进程都可以使用的变量。声明的前面需要添加 export 关键字。
    ③、位置变量:在执行脚本文件的时候,其后可以跟参数,在脚本文件内部,可以根据$!、$2、$3等指定引用的第几个参数。
    ④、特殊变量(系统变量):系统预置有特殊意义的变量,比如$?表示上一条命令执行状态结果(其值在0-255之间,0表示成功,其它均表示错误);$#表示用户在执行脚本的时候给出的参数的个数;$*和$@会列出所有的脚本参数。
    注: 命令set可以查看所有变量,export 、env 、printenv 可以查看环境变量。unset 变量名,可以删除变量。

    注:命令执行结果包括两个,一个是命令执行后产生的输出结果(如果不想命令执行完成后有输出,可以通过“&>/dev/null” 重定向到/dev/null这个虚拟设备中,该设备可以吞噬所有数据),一个是命令执行成功与否的状态结果(其值在0-255之间,只有0表示成功;命令执行完成后,其状态结果会保存在$?变量中,所以在脚本文件中常用作执行逻辑的判断标准,比如:command1 && command2 && command3 ... || commandn,该语法表示,如果第一条命令command1执行成功后就执行command2,command2执行成功后就执行command3 ... ,否则就执行commandn)。
      在脚本文件中,shift 当做脚本参数的轮换命令,每执行一次shift [n]命令,$1中存储的参数就轮换为下一个参数,所以如果有循环执行的换,可以只使用$1变量我们就可以将用户传递的参数轮换一遍。

  • 表达式
    ①、逻辑运算:与&&、或||、非!、异或^(两边相同为false,不同为true)。(注:shell脚本中的&&和||都具有短路功能)

    ②、测试表达式:该表达式主要用来判断,得出一个布尔结果,常跟在if后面,用来作为语句执行与否的判断依据;格式为 test expression 、[ expression ]或[ [ expression ] ]。
      注:bash的条件表达式中有三个几乎等效的符号和命令:test,[]和[[]]。通常,大家习惯用if [];then这样的形式。而[[]]的出现,根据ABS所说,是为了兼容><之类的运算符。[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符。比较它们性能,发现[[]]是最快的。不考虑对低版本bash和对sh的兼容的情况下,用[[]]是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。

      算术比较预算符:等于-qe、不等于-ne、大于-gt、小于-lt、大于等于-ge、小于等于-le。

      文件比较运算符:用法是 -选项 文件路径;-e 文件是否存在、-d 文件是否是目录、-f 文件是否是常规文件、-L 文件是否为符合链接、-r 当前执行用户是否对文件有可读权限、-w 当前执行用户是否对文件有可写权限、-x 当前执行用户是否对文件有执行权限;filename1 -nt filename2 文件1是否新过文件2、filename1 -ot filename2 文件1是否老过文件2、filename1 -ef filename2 文件1和文件2是否为同一个文件。

      字符串比较运算符:用法是 -选项 字符串;-z 字符串长度是否为0、 -n 字符串长度是否非零; str1 = str2 字符串str1是否等于str2、 str1 != str2 字符串str1是否不等于str2。
     参考文章、参考文章、参考文章

    ③、算术运算表达式:
      格式:
        使用 $[ ] 如: $[ 2+5 ]、 $[ $A + $B ]
        使用 $(( )) 如:$(( 2+5 )) 、$(( $A + $B ))
        使用 expr 外部程式 如:C=`expr 4 + 5`、C=`expr $A + $B`
        使用let 命令 如:let C=4 + 5、let C= $A + $B

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.编程基本概念 编程逻辑处理方式: 顺序执行 循环执行 选择执行 shell编程:过程式、解释执行编程语言的基...
    楠人帮阅读 1,459评论 0赞 1
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 本教...
    CurryCoder阅读 323评论 0赞 2
  • bash中变量的种类 局部变量:生效范围为当前shell进程,对当前shell之外的其它shell进程,包括当前s...
    毛利卷卷发阅读 681评论 0赞 1
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,835评论 0赞 5
  • 逛街的时候,路过瑜伽馆,便探头从玻璃窗往里看看。看到很多人,一排排在瑜伽垫上席地而坐,认真的做每一个体位。...
    小精000阅读 323评论 0赞 2

友情链接更多精彩内容