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. strncpy()函数【转】

    C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为: char * strncpy ( char * destination, const ...

  2. Jmeter测试普通java类说明

    概述 Apache JMeter是Apache组织开发的基于Java的压力测试工具.本文档主要描述用Jmeter工具对基于Dubbo.Zookeeper框架的Cassandra接口.区块链接口进行压力 ...

  3. HDU4578 线段树(区间更新 + 多种操作)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578  , 线段树的区间更新 + 多种操作,好题. 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节 ...

  4. 解决问题,链表finish

    从一个不懂链表,到反反复复改了不下50遍,提交该题页数更是突破了五页,从周三下午到周五中午的面向对象课前的20分钟,终于把这道题AC了,其实这题本来是原来C语言综合实验的一道题,但是本次在PAT上的审 ...

  5. Spring配置文件中的parent与abstract

    在看项目的Spring配置文件时,发现消息队列的配置采用了继承方式配置Bean,在这梳理总结一下. 其实在基于spring框架开发的项目中,如果有多个bean都是一个类的实例,如配置多个数据源时,大部 ...

  6. 文件属性及OS模块使用(IO入门2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] 文件属性及OS模块使用(IO入门2) 1. pytho ...

  7. update from select

    CREATE TABLE dualx( x_id ) NOT NULL , x_con ) ) CREATE TABLE dualy( y_id ) NOT NULL , y_con ) ) ','x ...

  8. 死磕salt系列-salt入门

    saltstack简介 SaltStack是一种新型的基础设施管理软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltStack提供了一个动态基础 ...

  9. VB.NET & Visual Basic

    当看到VB.NET者这本书籍的时候,翻开文件夹唯一的感受就是:这不和VB一样吗?究竟有什么差别呢? 1)版本号: 又一次回想VB,能够发现事实上他是Microsoft退出的基于Windows操作系统环 ...

  10. 如何使用jquery.qrcode.js插件生成二维码

    1.首先需要准备 jquery.qrcode.js 和 jquery.js github地址:https://github.com/lrsjng/jquery-qrcode 官方文档地址:http:/ ...