【Linux从零开始】:学习Bash与Shell Script(6) 一

本文发布时间: 2019-Mar-22
过了2周,终于学到shell cripte的编写了,回头看看鸟哥的菜已经吃完一半,还是略有成就感的,不过想想自己学了些什么,不知为什么也列举不出来太多。不管怎么说,现在Linux也算从零走到入门了吧,之后打算好好研究下Linux内核和Linux C编程,搞几个小项目深入下,有需要再看看系统管理什么的。废话不多说了,把今天看shell script的笔记整理出来吧。 编写shell script的良好习惯                1.文件头处记录  1.script的功能;  2.script的版本;  3.script的作者与联络方式;  4.script的历史记录;  5.script内较特殊的命令,最好使用“绝对路径”的方式来执行;  6.script执行时需要的环境变量预先生命与设置。  同时,根其他编码一样,添加适当的注释,整齐的缩进排版都是很重要的。 2.简单的范例:  从Hello World开始~  第一行:#!声明你所使用的shell名称:这个还是比较重要的,这样系统就能够加载bash的相关环境配置文件(一般来说就是non-login shell的~/.bashrc)  #作为注释的前缀,自我觉得这注释的颜色挺好看的哈。  在程序的开头,最好对主要的环境变量进行声明,比如PATH和LANG等是比较重要的2个,方便程序直接执行命令,而不必写绝对路径。 shell中的变量                          1.变量的显示与设置:  echo $LANG 显示各种变量    1.使用等号对变量进行赋值:  EG:name=abc 自定义变量  echo $name 输出结果:abc  2.等号右边不能直接根空格符,且变量名称必须是英文字符与数字,不能数字开头(都比较基本啦)  3.变量内容若又空格等字符可使用双引号“”,单引号''将变量内容结合起来:  A.双引号中的特殊字符如$等,可以保有原本的特性:    eg:name= "$name its me" 输出变量原来的值   echo $name 输出结果:abc its me  B.单引号内的特殊字符作为一般文本字符原样输出:    eg:name= ' $name its me' 原样输出' '中的内容   echo $name 输出结果: $name its me  4.可以使用 \ 将特殊字符转换为普通字符([Enter] $ \ 空格 !等)  5. 增加变量内容:(读取变量值)    eg: name="$name"yes或者 name=${name}yes (推荐) echo $name 输出结果:abcyes  6.若要在等号右边调用命令输出:    eg: version = $(命令名称) version=$( uname -r )  7.若需要在其他子进程中也是使用该变量,需要使用export将该变量声明为环境变量  8.通常大写字符为系统默认变量。  9.取消变量的方法: unset 变量名称 unset name 2.环境变量的功能:  列出目前shell环境下的所有环境变量与其内容: env  列出所有的变量(环境变量与自定义变量):set  $(关于本shell的PID) 使用echo $就可以获得本线程的PID号码  ?(关于上个执行命令的回传码)如果成功执行,回传0;如果执行发生错误,会回传“错误代码”  将自定义变量声明为环境变量:export 变量名称  影响现实结果的语系变量:    locale (本机目前设置)locale -a (系统所支持的全部语系) 3.变量键盘读取,数组与声明:  1.键盘读取:read [-pt] variable;    -p:宁可以接提示符 eg: read -p "Please input your name" name;    -t:接等待的秒数 eg: read -t 30 name。  2.变量的声明: declare [-aixr] variable    -a:将后面变量声明为数组类型;    -i:将变量声明为整型;    -x:将变量声明为环境变量;    -r:将变量声明为readonly类型,该变量不可悲更改内容,也不能重设。    变量类型默认为字符串;如果不小心把变量声明为只读,必须注销才登陆才能复原。  3.数组的声明: var[index]=content    eg:var[1]="small min"     var[2]="big min"      var[3]="nice min"      echo "${var[1]}, ${var[2]}, ${var[3]}" 4.变量内容的删除,替代和替换   变量设置方式说 明${变量#关键字}若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除 (删除第一个)${变量##关键字}若变量内容从头开始的数据符合“关键字”,则将符合的最长数据删除(剩下最后1个)${变量%关键字}从尾向前的数据符合“关键字”,则将符合的最短数据删除(删除第一个)${变量%关键字}从尾向前的数据符合“关键字”,则将符合的最长数据删除(剩下最前面的一个)${变量/旧字符串/新字符串}变量内容符合旧字符串,第一个旧字符串替换为新字符串${变量//就字符串/新字符串}变量内容符合就字符串,所有的都替换为新字符串                        变量的测试与替换方式变量设置方式str没有设置str为空字符串str为非空字符串var=${str-haha}var=hahavar=var=$strvar=${str:-haha}var=hahavar=hahavar=$strvar=${str+haha}var=var=hahavar=hahavar=${str:+haha}var=var=var=hahavar=${str=haha}var=str=hahavar=str=str不变 var=$strvar=${str:=haha}var=str=hahavar=str=hahastr不变 var=$strvar=${str?haha}errorvar=var=$strvar=${str:?haha}errorerrorvar=$str5.命令别名与历史命令  命令别名设置:alias, unalias(很简单)  eg: alias name='wolegequ' alias c='cal'  历史命令: history [n] [-c] [-raw] histfiles    n:列出最近的n条命令    -c:清楚目前shell中的所有内容    -a:将新增命令加入histfiles,若没有该文件,默认写入~/.bash_history    -r: read -w:write  echo $HISTSIZE 显示history的大小  !!执行上一条命令,!number 执行第几条命令  #:最终命令写入histfile的问题,只有最后注销的那个bash才回写入~/.bash_history


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:11pm
栏目列表