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学习---Map的学习

    1. Map 1.1. map中的方法 1.2. Map.Entry 对于集合来讲,就是把kye-value的数据保存在了Map.Entry的实例之后,再在Map集合中插入了一个Map.Entry的实 ...

  2. December 28th 2016 Week 53rd Wednesday

    Knowledge is a treasure, but practice is the key to it. 知识是珍宝,而实践是获取她的钥匙. I know a lot, but what I r ...

  3. Apache,php配置

    很多朋友想要在window下配置apache+php+mysql运行环境,其实从这么长时间的经验来看,win2003下还是用iis,如果为了学习或对apache特别熟悉的朋友可以用apache   一 ...

  4. Vim 编辑器及其基本操作

    实验楼某些课程有用 Vim 编辑器来写代码,因此有了这篇博客,据说是上古神器,当然主要目的是基本操作. Vim 编辑器 Vim(Vi IMprove) 是 Linux 系统上的最著名的文本/代码编辑器 ...

  5. 使用python 操作liunx的svn,方案二

    在对liunx操作svn的方式,做了改动,使用python的,subprocess进行操作 在第一种方案中,我使用了先拉到本地,然后再创建,在进行上传,实际在svn中可以直接创建文件,并进行文件复制, ...

  6. python strip()

    函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头 ...

  7. Why Reactive(Cocoa)?-时间线、输入、输出、复杂性、异步、状态、聚合

    To put it another way, the output at any one time is the result of combining all inputs. The output ...

  8. Kali-linux使用社会工程学工具包(SET)

    社会工程学工具包(SET)是一个开源的.Python驱动的社会工程学渗透测试工具.这套工具包由David Kenned设计,而且已经成为业界部署实施社会工程学攻击的标准.SET利用人们的好奇心.信任. ...

  9. linux(Centos7系统)中安装JDK、Tomcat、Mysql

    安装前准备两个工具:(360可以安装) 1.JDK的安装 使用yum命令安装 .查看是否已安装JDK # yum list installed |grep java .卸载CentOS系统Java环境 ...

  10. Linux开启路由的方法

    Linux开启路由的命令很简单,只需要一条命令即可: [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 这个只是临时修改,如果 ...