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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,699评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,124评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,127评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,342评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,356评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,057评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,654评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,572评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,205评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,343评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,015评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,704评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,196评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,690评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,348评论 2 358

推荐阅读更多精彩内容

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