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

    

linux——Shell编程基础的更多相关文章

  1. Linux Shell 编程基础详解——吐血整理,墙裂推荐!

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  2. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  3. [Linux]shell编程基础/linux基础入门

    声明执行程序 #!/bin/bash 用来告诉系统使用/bin/bash 程序来执行该脚本.譬如python 脚本,可以这样写: #!/usr/bin/python   赋值和引用 赋值公式: 变量名 ...

  4. linux —— shell 编程(整体框架与基础笔记)

    导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...

  5. Linux学习之二十一-shell编程基础

    Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...

  6. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  7. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  8. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  9. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

随机推荐

  1. Java学习---异常处理的学习

    基础知识 任何一门计算机程序设计语言都包括有绝对正确和相对正确的语句.绝对正确: 指任何情况下, 程序都会按照流程正确执行:相对正确: 程序的运行受到运行环境的制约, 在这种情况下, 需要附加检测和控 ...

  2. php-fpm配置参数.md

    Global Options pid string PID文件的位置.默认为空.默认路径放在/usr/local/php-fpm/var. error_log string 错误日志的位置.默认:安装 ...

  3. BZOJ3791:作业(DP)

    Description 众所周知,白神是具有神奇的能力的. 比如说,他对数学作业说一声“数”,数学作业就会出于畏惧而自己完成:对语文作业说一声“语”,语文作业就会出于畏惧而自己完成. 今天,语文老师和 ...

  4. python沙箱逃逸的几道题

    第一道 from __future__ import print_function print("Welcome to my Python sandbox! Enter commands b ...

  5. 随手练——S(n)=O(1),判断一个链表是否为“回文”

    方法一:T(n)=O(n),S(n)=O(n) 走完一遍链表,每个值入栈,之后再走一遍链表,和每次弹出的栈顶进行比较. 核心: LNode *p = l->next; while (p) { s ...

  6. const引用和constexpr

    1.const指针 eg: (1)  int const * p = nullptr; p = new int[10]; p[3] = 4; //error 我们发现第三行没法编译,这是因为第一行的c ...

  7. Spring(五)之Bean定义继承和依赖注入

    一.Bean定义继承 bean定义可以包含许多配置信息,包括构造函数参数,属性值和特定于容器的信息,例如初始化方法,静态工厂方法名称等. 子bean定义从父定义继承配置数据.子定义可以根据需要覆盖某些 ...

  8. 项目所有的证书文件路径iOS

    ~/Library/MobileDevice/Provisioning Profiles

  9. Unity各平台内置宏定义

    属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...

  10. java实现zabbix接口开发

    API:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/user/login 如果你使用jar包开发的话,会出现*** ...