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. SVN图标不显示的解决几种方式

    系统安装的Tortoise SVN,不知道是不是安装了其他软件的缘故,造成SVN客户端功能可以正常使用,就是文件夹或文件的左下角不显示图标.故上网查找解决方法: 方法一: 升级到最新版本,基本是没用的 ...

  2. Java实例---简单的投票系统

    代码分析  InputData.java package vote; import java.io.BufferedReader; import java.io.IOException; import ...

  3. C# Razor 小笔记和某些细节

    知识小结:C# 的主要 Razor 语法规则 单独一个变量直接使用 @a 的形式,无需加分号,一般是直接使用已有变量,注意在使用 html 标签时,要和 razor 表达式加一个空格. //不能有空格 ...

  4. JavaScript 变量声明提升

    JavaScript 变量声明提升 一.变量提升的部分只是变量的声明,赋值语句和可执行的代码逻辑还保持在原地不动 二.在基本的语句(或者说代码块)中(比如:if语句.for语句.while语句.swi ...

  5. 淡说Linux 的发展史

    ♦ 1  Linux的简单介绍 Linux与Windows一样都是一套OS(操作系统),Windows界面美观 ,普通用户很容易上手,点点鼠标就能搞定许多操作,而Linux生下来就是为程序员的,故精通 ...

  6. 如何彻底修改eclipse中的名称

    一.右键工程:Refactor->Rename,或选中工程按F2,修改名称二.修改项目目录下:.project文件 <?xml version="1.0" encodi ...

  7. leaflet 中文API

    LeafLet js 官网:http://leafletjs.com/index.html LeafLet js 官网demo: http://leafletjs.com/examples.html ...

  8. js 键盘点击事件

    回车键(Enter)的触发事件  js 代码如下: document.onkeydown = function (e) { if (!e) e = window.event; if ((e.keyCo ...

  9. QTP基本方法3-----截屏

    1.桌面截屏 Desktop.captureBitMap  path[,bolean] path:保存路径,可选择绝对路径或相对路径 相对路径是保存在脚本保存的目录下编号最大的res目录下. bole ...

  10. Segmentation fault (core dumped) 错误的一种解决场景

    错误类型 Segmentation fault (core dumped) 产生原因 Segmentation fault 段错误. Core Dump 核心转储(是操作系统在进程收到某些信号而终止运 ...