bash学习要点

学习各种脚本,linux下开发,这些东西都离不开bash的学习。下面列了些bash在学习过程中的一些值得注意的要点。

关于变量:

1,bash中可以使用变量名,我们可以把变量名的解析看成字符串的替换,因为bash不是强类型语言。比如我们定义个变量:

               var=54

      其中变量名为var,它代表了字符串“54”,而不是一个整数54。bash中变量没有类型。

2,bash中变量可以在使用的同时就是定义。如果你使用一个变量,但是以前都没有地方定义过,那么这个变量就是空的。

3,bash中的变量都是全局变量,只要在任何一个地方定义了(包括在函数里面),那么之后运行的代码都可以使用这个变量。如果想在函数里面定义个临时变量,可以在变量前面加个local来修饰,这样就是定义了个临时变量,在函数结束的时候,这个临时变量将失效。

4,变量的赋值就是定义,并且需要注意‘=’两边不能有空格。需要了解,有些编程语言会用<非字母字符>当成词法分析时的分隔符,但是bash只是用<空格>作为单词的分隔符,没有空格,就是一个完整的单词。如

        if[-z ${JAVA} ]

if 后面要有空格,否则 就是 if[,连在一起当成一个单词,这个单词显然不是关键字if。[后面也必须要有空格,否则,[-z当成一个单词,显然也不等于关键字[.总之,bash先做词法分析,用空格分割出一个一个的单词,再去分析这个单词是啥含义。

5, 用引号把变量框起来使用,防止变量的内容为空,或者包含空格,特别是用 if 语句来判断一个变量的值。如:

     if [ -z ${JAVA} ]

如果没有按照 JAVA,变量就是为空,语句就是

      if [ -z ]

明显错误,-z 后面必须要有判断的对象。如果对变量加上引号:

    if [ -z “${JAVA}” ]    变成  if [ -z “” ], 正确的判断格式。

6,  bash是一种解释语言。bash在执行的时候是读一句,执行一句,没有预编译的过程。可以说,写bash的代码,不存在“语法错误”这个概念,你如果写错了,bash会按自己理解的方式来执行。比如赋值语句中“=”两边不能有空格,如果你有空格,无所谓,bash会按其他方式来解释你写的代码,然后继续执行。具体来讲

       var  =  54

这句话,bash理解成环境路径里面有个可执行程序叫 var,执行这个程序,同时传递给它2个参数,第一参数是“=”,第二个参数是“54”。结果当然是报错“找不到可执行程序var”收尾。(总之,当你写的代码bash穷举自己的理解方式都理解不了的时候,bash就把它当成一个可执行程序来执行)

7,获取执行脚本本身所在目录的绝对路径方法:

         $(cd "$(dirname "$0")" && pwd)

   $0表示脚本本身,dirname取其所在目录(注意,这个目录可能是相对目录),cd 到这个目录, 通过pwd命令把绝对路径返回。由于有小括号,表示在subshell里面执行cd命令,当subshell退出的时候,父shell本身的当前目录是不改变的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值