linux——Shell编程基础
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编程基础的更多相关文章
- Linux Shell 编程基础详解——吐血整理,墙裂推荐!
第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...
- Linux Shell编程基础
在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls 显示当前路径下的文件,常用的有 -l 显示长格式 -a 显示所有包括隐 ...
- [Linux]shell编程基础/linux基础入门
声明执行程序 #!/bin/bash 用来告诉系统使用/bin/bash 程序来执行该脚本.譬如python 脚本,可以这样写: #!/usr/bin/python 赋值和引用 赋值公式: 变量名 ...
- linux —— shell 编程(整体框架与基础笔记)
导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...
- Linux学习之二十一-shell编程基础
Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...
- 详细介绍Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
- linux —— shell 编程(编程语法)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
随机推荐
- 沉淀再出发:java的文件读写
沉淀再出发:java的文件读写 一.前言 对于java的文件读写是我们必须使用的一项基本技能,因此了解其中的原理,字节流和字符流的本质有着重要的意义. 二.java中的I/O操作 2.1.文件读写的本 ...
- Web Service超限
问题现状: {System.ServiceModel.CommunicationException: An error occurred while receiving the HTTP respon ...
- SQL Server用户自定义函数(UDF)
一.UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且可以作为一个单元来进行调用. UDF和存储过程的主要区别在于返回结果的方式: 使用UDF时可传 ...
- Radix Sorts
基数排序 Strings In Java Char Data Type C 语言中的字符数据类型占一个字节(8 比特),最多只能表示 256 个字符.支持 7 位的标准 ASCII(American ...
- python时间模块和random模块
模块:用一坨代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能,可能需要多个函数才能 ...
- python ,__set__, __get__ 等解释
@python __set__ __get__ 等解释 如果你和我一样,曾经对method和function以及对它们的各种访问方式包括self参数的隐含传递迷惑不解,建议你耐心的看下去.这里还提到了 ...
- Debian下Cannot set LC_CTYPE to default locale: No such file or directory解决方法
把语言环境变量改为英文 将Ubuntu系统语言环境改为英文的en_US.UTF-8 查看当前系统语言环境 locale 编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为en ...
- BZOJ2223/3524:[POI2014] Couriers(主席树)
Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...
- MFC窗体程序中添加调试控制台
在编写复杂程序的过程中,我们经常需要将一些信息输出到文件或者屏幕上.较控制台应用程序,MFC窗体程序要显得麻烦一些! 下面有2种方法来实现为MFC窗体程序添加调试控制台,方便程序员调试程序和了解当前程 ...
- js实现全选、全不选、反选的功能
<!DOCTYPE html> <html> <head> <META charset="utf-8"/> <link rel ...