Shell 基础 语法

一.基础知识

#-----------------/test.sh--------------
#!/bin/bash     #命令解释器
:<<BLOCK       #块注释
本脚本的作用是输出一行字符串
BLOCK
echo "hello world!"
                  
1.   #!   指定命令解读器,就是告诉你接下来的命令应该调用什么来执行。
        比如可以用#!/bin/sh   #!/bin/csh  #!/bin/more 等等来替换。 使用more的结果就是把命令输出来.   
2.  行注释用  #    
     块注释用   :<< BLOCK  
                          ****
                          BLOCK
3.  如何执行shell程序
                    chmod +x test.sh   加执行权限
                 .    /test.sh    执行
4.shell 解释性语言,即他的代码会一行接着一行的执行。
5.$(ls) 相当于执行 ls命令,只用 ls 也可以

二.编程基础

    1.变量声明和使用
             BASH中有3种变量 ,用户自定义变量,系统变量,环境变量。
                1.1用户自定义变量
                   bash中的变量是弱变量,弱变量的特点是声明变量不用声明类型和可以存储不同类型的值。大小写区分。
         变量=值     //等号两边不能有空格
          a=1
          b="string"
                     虽然通过以上方式可以很方便的定义变量,但是对于变量的某些属性却不容易控制,例如,变量的类型和读写属性等。
                     所以为了更好的控制变量的相关属性,Bash提供了一个名称为declare的命令来声明变量。declare又名typeset  
   语法:declare attribute variable    
             declare -i   num     #定义变量x为整数
             declare +i   num     #取消变量x的整数属性
        declare -r   num     #声明num为只读变量
            decalre -x   num     #声明num为环境变量
                       -p 显示所有变量的值                  
                      -i 将变量定义为整数。在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数就设置0.                 
                      -r 将变量声明为只读变量。 不允许修改,删除。                
                      -x 将变量设置为环境变量,这样在随后的脚本和程序中可以使用。                  
                      -a 声明变量为数组变量,但是没有必要。因为本来就是弱变量。                
                      -f  显示所有自定义函数,包括名称和函数体   

                1.2系统变量
                系统变量主要在参数判断和命令返回值判断时使用。包括脚本和函数参数,以及脚本和函数的返回值。
                以下是常用的系统变量。
                    
                         
                1.3环境变量
                  环境变量是所有shell程序都可以使用的变量,环境变量会影响到所有脚本的执行结果。 
                   可以使用  set 命令 列出所有的环境变量。
                  下面是常用的环境变量。
                    
   
                 1.4变量的使用
               对变量的调用需要在前加$号,对于多字符的变量,建议采用{}把变量括起来      
            a=3; abc=4
            echo "$a , ${abc}"
                  变量的使用一般配合引号的应用。
                            双引号 : 除 ($ , ' '," " ,\) 美元号,单引号,双引号,反斜线之外,其他所有的字符都将保持字面意义。
                            单引号 : 引号内所有字符都保存字面意义
                            反引号 : 反引号内的字符串将被解释为Shell 命令
                            反斜线 : 转义字符,屏蔽其后的字符的特殊意义
                            

2.算术运算

                          常用的 运算符有 加(+)减( -)乘( *)除( /)求余( %)幂( **)
                           可以通过4种方式来执行算术运算,expr 和let 效率不如$((...)) 和 $[...]
                          1.使用expr外部程序
                               note: 1.使用反引号,2.运算符两边一定要有空格 3.使用乘号 和括号的时候需要加转义字符\ .
                                可以看到这种方法真的是很繁琐。
                               
                         2.使用$((...))
                              note: 运算符旁边空格可加可不加,不需转义
                              
                             方便吧!!
                         3.使用$[...]
                                 使用方法与效果同上
                         4.使用let命令
                             
    3.条件判断
               bash程序的判断与C语言等有一些区别,条件判断的结果为0表示真,结果为1表示假,刚好与C语言相反。
                         可用于与比较的有4类:
          •           字符串的关系
          •           整数的关系
          •           文件是否存在或是否具有某种状态或属性
          •           多个条件的逻辑组合
判断的格式有两种:
  •         test condtion
  •         [ condtion ]  注意 中括号[] 边要有空格,运算符 左右有空格,字符串最好用“ ” 引起来
               字符串判断
                              
               整数判断:
                             
               文件判断:
                            
                逻辑判断:
                                     
    4.控制结构
                        控制结构分顺序,分支,循环
                        分支包括 if分支,case 分支
                        循环包括 for循环,while循环,until循环

                    IF:
                            
                        CASE:
                     
            For 循环
         #for 循环
            结构 for var [in {..} ]
                do
                 echo "hello"
               done

            for var in { 列表 }
            example:
                 for var in 1 2 3 4 5 6 7
                 for var in {1..8}  从1到8
                 for var in {1..100..2} 初始值1,结束值为100,步进为2
                 for var in {Mon Tue Wed Thu Fri Sat Sun}
                 for var in $(ls)  这个和下面两个作用相同
                 for var in `ls`
                 for var in *
                 for var in $*

            不带列表的for循环
                for var
                   等价于 for var in $* 也等价于 for var in $@

            类C风格的for循环
                 for ((i=1;i<5;i++))
 
           while循环   
             while expression
                do
                     echo "hello"
                done

        until循环
            until expression
                do
                    echo "hello"
                done        
 另外用在循环里面的还有break,continue 命令;   
                
五.函数定义
        函数名()
        {
                命令
        }

        func()
        {
              echo "hello"
        }

    函数使用
      func  "$2" "$3"   //传参数    在传参数这里注意,$* $@ $n 这些变量 在函数里也可以使用,且函数参数的$0 仍然是脚本name。
                        //  但是要注意的是 我们传的参数是主函数的$2,$3,在func函数里就是$1,$2



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值