Shell变量、函数
上篇文章初步认识了一下shell脚本及其简单的案例,下面我们再来讲一下shell的进击部分。
一.变量
1.常用系统变量:($HOME、$SHELL、$PWD、$USER)
2.自定义变量:
2.1.基本语法
*定义变量:变量=值
*撤销变量:unset 变量
*声明静态变量:readonly 变量
2.2.变量定义规则:
*变量名称可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写;
*等号两侧不能有空格;
*在bash中,变量默认类型为字符串类型,无法直接进行数值运算;
*变量的值如果有空格,需要用双引号或单引号括起来。
2.3.案例:
*定义变量 A,并输出

*撤销变量,输出空

*声明静态变量,不能unset,再次赋值报错

*在bash中,变量默认类型为字符串类型,无法直接进行数值运算

*变量的值如果有空格,需要使用双引号或单引号括起来

*把变量提升为全局变量export,(在.sh文件中添加以下图一内容)

3.特殊变量:($n、$#、$* 、$@、$?)
3.1.$n
3.1.1.基本语法:
n为数字,$0代表该脚本名称,$1-$9代表第一到九个参数,十以上的需要用花括号包起来,例:${10}
3.1.2.案例(输出该脚本文件名称、输入参数1和输入参数2 的值):
*创建.sh文件并写入内容赋予权限[chmod +x ./test.sh](touch test.sh)

*输出内容

3.2.$#
3.2.1.基本语法:
获取所有输入参数个数,常用于循环
3.2.2.案例(获取输入参数个数)

3.3.$*、$@
3.3.1.基本语法
$*:代表命令行中所有参数,把所有参数看做一个整体;
$@:代表命令行中所有参数,把每个参数区分对待。
3.3.2.案例(打印输出所有参数):

3.4.$?
3.4.1.基本语法
最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确
3.4.2.案例(判断某脚本是否正确执行)

二.函数
1.系统函数(basename、dirname):
1.1.basename(删掉所有的后缀包括最后一个“/”字符,然后将字符串显现出来)
*案例(截取路径的文件名称)

1.2.dirname(从给定的包含绝对路径文件名中去除文件名,返回剩下的路径)
*案例(截取文件的绝对路径)

2.自定义函数:
2.1.注意
*必须在调用函数地方之前,声明好函数,shell脚本是逐行运行,不会像其他语言一样先编译;
*函数返回值,只能通过 $? 系统变量获得,可以显示加return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
2.2.案例(计算两个输入参数和)

三.运算符
1.基本语法:
*"$((运算式))"或"$[运算式]"
*expr + , - , \* , / , % 加,减,乘,除 (expr运算符之间要有空格)
2.案例(计算3+2的值):

四.条件判断
1.基本语法:
[ condition ]:(前后要有空格,条件非空即为true,反之false)
2.常用判断条件:
2.1.两整数之间比较
= :字符串比较 -lt:小于 -le:小于等于 -eq:等于 -gt:大于 -ge:大于等于 -ne:不等于
2.2.按照文件权限进行判断
-r:有读的权限 -w:有写的权限 -x:有执行分权限
2.3.按照文件类型进行判断
-f:文件存在并且是一个常规分文件 -e:文件存在 -d:文件存在并是一个目录
3.案例:
*23是否大于22 0:true 其他:false

*多条件判断(&&表示前一条命令执行成功时,才执行后一条命令;||表示上一条命令执行失败时,才执行下一条命令)

五.流程控制
1.if 判断
1.1.基本语法(中括号与条件之间必须有空格,if后要有空格)

1.2.案例(判断用户输入的信息,如果是1则输出OK,2输出NOTOK,其他的不输出):

2.case 语句
2.1基本语法(双分号表示命令序列结束,相当于java中的break;最后的 * 表示默认模式,相当于java中的 default)

2.2.案例

3.for 循环
3.1.基本语法

3.2.案例(从1加到100):

4.while 循环
4.1基本语法

4.2.案例(从1加到100):

Shell变量、函数的更多相关文章
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- 转 linux shell自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- shell变量、函数和数组以及字符串的截取
一.变量 1.shell变量名 (1)可以由字母.数字.下划线等字符组成.但是第一个字符必须是字母或者下划线. (2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.ta ...
- Linux操作系统shell与函数详解
shell和函数的定义 1. linux shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell 函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...
- shell之函数
function 所有函数在使用前必须定义.这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用.调用函数仅使用其函数名即可.可以将函数看作是脚本中的一段代码,但是有一个主 ...
- 《Linux shell变量总结回顾》RHEL6(转)
文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [root@localhost ~]# set //查看到的是局部变量和全局变量2种 [ ...
- $ cd `dirname $0` 和PWD%/* shell变量的一些特殊用法
在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的.因为他返回当前路径的".". $0:当前Shell程序的文件名dirname $0,获取当前Shell程序 ...
- shell变量数学运算
shell变量数学运算 #!/bin/sh # 本脚本说明shell脚本中变量运算的用法 # 错误的用法var=1var=$var+1echo $var 输出:1+1 # 第一种用法,letvar=1 ...
- Linux shell 自定义函数
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
随机推荐
- HTML5大纲算法
什么是HTML大纲算法? 大纲算法允许用户代理(user agent)从一个web页面生成一个信息结构目录,让用户对页面有一个快速的概览.类似书籍.PDF.帮助文档等,都有一个清晰的目录结构,用户能方 ...
- jwt鉴权学习 (php示例代码)
前段时间听朋友讲起 jwt鉴权,博主我是一脸懵逼,通过朋友坚持不懈的讲解,我终于听懂了,jwt就是登陆token校验嘛 然而事情并不是博主想象的那么简单,在一个艳阳高照,晴空万里的夜晚,博主手贱百度了 ...
- .Net orm 开源项目 FreeSql 2.0.0(满意的答卷)
写在开头 2018年11月头脑发热到今天,一晃已经两年,当初从舒服区走向一个巨大的坑,回头一看后背一凉. 两年时间从无到有,经历数不清的日夜奋斗(有人问花了多长时间投入,答案:全职x2 + 两年无休息 ...
- Appium上下文和H5测试(一)
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.混合应用-H5 1.混合应用是什么? 2.怎么样分辨一个 App 页面究竟是原生的还是 We ...
- 【Camtasia教学】如何添加光标效果
随着网络技术的快速发展,手机等移动工具越来越普及,我们的生活也发生了很大的变化,例如我们以前必须去到学校才能学习知识,但是现在躺在床上都可以看国外的教学视频.所以在网上录制教学或者演示视频变得越来越常 ...
- 「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤
description 题面很长,这里给出题目链接 solution 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护 故每次询问 ...
- day007|python基础回顾7
文件处理 目录 文件处理 1 文件打开模式补充 2.1 文件操作之读操作 2.2 文件操作之写操作 3 控制文件指针移动 3.1 前提 3.2 f.seek() 4 文件修改的两种方式 4.1 方式一 ...
- Spring MVC系列-(5) AOP
5 AOP 5.1 什么是AOP AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的 ...
- C语言讲义——结构体struct
结构体是一种变量类型,可以包含多个变量(变量类型不必相同). 结构体的关键字是struct也是一种值类型. 例:设计一个表示"书本"的结构体: structBook { chari ...
- [题解] [USACO05JAN]Muddy Fields G
题目TP门 题目大意 在一个 \(R×C\) 的矩阵中,每个点有两个状态:草地和泥地.你需要在泥地里铺 \(1×k\) 木块, \(k\) 为任意整数,求最少要多少木块. 思路 两个横向木块不会互相干 ...