• linux——Shell编程基础


     


     

    1. shell 脚本的执行方式

      1.1 直接绝对路径执行

        

     

      1.2 相对路径执行

        首先进入到shell脚本所造的目录

        

        PS:用./执行要增加x权限。用bash执行可以不增加x权限

      

      1.3 在当前shell中执行

        前两种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。

        shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。

        而以下方法则是在当前shell中执行的,在脚本的执行路径前在加 .

        

     

    2. shell 变量

      shell 变量分为系统变量和用户自定义的变量,定义变量时不加$,使用时要加$,使用echo $变量名 可以打印出变量值。

      2.1 系统变量

        常见的系统变量有:$HOME、$PWD、$SHELL、$USER

        显示当前shell中的所有变量用set

        

       

      2.2 自定义变量

         2.2.1 变量定义

          变量定义:变量名=值(等号左右不能有空格,变量名称一般习惯大写)

          撤销变量:unset 变量名

          

     

         2.2.2 双引号和单引号的区别

          双引号只会对空格脱意

          单引号会对所有字符脱意(即输入什么显示什么)

          

     

         2.2.3 将变量提升为全局变量

          export 变量名(其他shell可以使用)

          /etc/profile 文件中定义JAVA_HOME就使用的export

          

          使用source 可以将文件中的export指令执行一遍

     

        2.2.4 将命令的返回值赋给变量

          用反引号(Esc下面的那个键)或者$(命令)

          

     

         2.2.5 Shell中特殊变量

          $0:当前脚本的文件名

          $n:第n个位置参数(n>=1)

          $#:脚本运行时携带的参数个数

          $?:最近一个命令的退出状态码(0为正常)

          $$:当前shell的进程ID(PID)

          $!:最近一个后台命令的PID

          $*:传递给脚本或函数的所有参数,$*会将这些参数视为一个整体

          $@:传递给脚本或函数的所有参数,$@会将所有参数当作同一字符串中的多个独立的单词

          

    3. 运算符

      shell中只能进行整形的运算,要用expr来标示是运算表达式(expr后要有空格,运算符号前后要有空格)

      

    4. 流程控制语句

      4.1 for循环

        

      

      4.2 while 循环

        

         

       4.3 case 语句

         

      4.4 if 语句

        

        注意:判断语句 [ condition ] 中,condition 前后都需要有空格;且condition非空返回true,空返回false;

         

        常用的判断条件:

        字符串的比较:=

        小于:-lt

        小于等于:-le

        大于:-gt

        大于等于:-ge

        数字等于:-eq

        不等于:-ne 

    5. 自定义函数

      5.1 语法

       调用函数时需要先定义,shell是逐行运行,不会预先编译! 

       [ function ] functionName [ () ]

        {

          action;

          [ return int; ]

        }

         

        例如:

         function start() | function start | start()

          

    #!/bin/bash
    function sum(){
      echo $1,$2;
      return $(($1+$2))
    }
    sum 5 6
    echo "sum: " $?

           

          

       5.2 入参

          调用时给入

       5.3 返回值

         函数的返回值只能通过return返回,return后只能跟数字0-255;

         若不加返回值,则以最后一行命令的结果作为返回值;

         函数的返回值只能通过$?获得

       5.4 代码的调试

        sh -vx function.sh

        

  • 相关阅读:
    java堆和栈的区别
    什么是java 序列化,如何实现java 序列化?
    HashMap和Hashtable的区别
    [LeetCode] 548. Split Array with Equal Sum 分割数组成和相同的子数组
    [LeetCode] 533. Lonely Pixel II 孤独的像素 II
    [LeetCode] 531. Lonely Pixel I 孤独的像素 I
    [LeetCode] 205. Isomorphic Strings 同构字符串
    [LeetCode] 351. Android Unlock Patterns 安卓解锁模式
    Python list、tuple、dict区别
    Minimum number of swaps required to sort an array
  • 原文地址:https://www.cnblogs.com/lalala823581291/p/10093929.html
Copyright © 2020-2023  润新知