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. Python学习---django多对多自定义第三方表180206

    案例一: # version: python3.2.5 # author: 'FTL1012' # time: 2018/2/6 16:25 from django.db import models ...

  2. Linux 系统安装[Redhat]2

    1.1. 配置网络 开机启动网卡eth0 1. 修改网络信息[root@Webserver ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVI ...

  3. 原生ajax和jsonp

    封装方法: function ajax(options) { options = options || {}; options.type = (options.type || "GET&qu ...

  4. Undirected Graphs

    无向图 Introduction 图是由边连接的点的集合,有着广泛的应用空间. 一些图的术语,点,边,路径,环(圈),连通分量(子图). 简单路径不重复经过点,简单环不含有重复点和边,简单图不含自环和 ...

  5. 导出当前域内所有用户hash的技术整理

    0x00目标: 导出当前域内所有用户的hash 0x01测试环境: 域控:server2008 r2 杀毒软件:已安装* 域控权限:可使用net use远程登陆,不使用3389 0x02测试方法: ( ...

  6. 关于crontab中的一些小问题

    今天写了个脚本,要写进crontab做定时任务,每5分钟跑一遍.关于crontab的介绍呢,请大家移步www.baidu.com,在这里我就不仔细介绍了.可以搜索一下“每天一个Linux命令”系列文章 ...

  7. 第04章-VTK基础(7)

    [译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年.ISBN: 978-1-930934- ...

  8. js事件的机制

    1.html事件处理程序 <button id="btn1" onclick="alert(1);">按钮1</button> 2.do ...

  9. 7、Web Service-IDEA-jaxws规范下的 服务端/客户端 开发

    前提简介:这里之后即使基于IDEA进行开发的,风格与之前有些不同之处! 1.服务端的开发 1.创建新的项目 2.pom.xml 添加开发时所需要的依赖 <?xml version="1 ...

  10. MVC5新特性(一)之RouteAttribute打造自己的URL规则

    1.RouteAttribute概述 RouteAttribute的命名空间是System.Web.Mvc,区别与web api的RouteAttribute(它的命名空间是System.Web.Ht ...