zoukankan      html  css  js  c++  java
  • 【Linux从零开始】:6.学习Bash与Shell Script(1)

      过了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=haha var= var=$str
    var=${str:-haha} var=haha var=haha var=$str
    var=${str+haha} var= var=haha var=haha
    var=${str:+haha} var= var= var=haha
    var=${str=haha} var=str=haha var=str= str不变 var=$str
    var=${str:=haha} var=str=haha var=str=haha str不变 var=$str
    var=${str?haha} error var= var=$str
    var=${str:?haha} error error var=$str

     

       5.命令别名与历史命令   

      命令别名设置: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

      

     

    知识共享许可协议
    本作品由vortex.zhu创作

    采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
    基于www.cnblogs.com上的作品创作。
    Permissions beyond the scope of this license may be available at http://www.cnblogs.com/VortexPiggy/.


     

  • 相关阅读:
    理解CSS定位中的overflow和visibility属性
    理解CSS定位中的position
    理解margin负值,实现经典布局
    理解CSS定位中的float
    CSS表格属性
    图解一步步安装SharePoint Foundation 2010
    Gladinet Cloud Desktop Professional License(专业版序列号)
    配置SharePoint Foundation 2010基于表单的验证支持
    快逸报表部署心得
    如何阅读公司财务报告
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2444947.html
Copyright © 2011-2022 走看看