Shell 学习(二)
Shell 学习(二)
1 设置环境变量
1.1 基本语法
1)export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
2)source 配置文件 (功能描述:让修改后的配置信息立即生效)
3)echo $变量名 (功能描述:查询环境变量的值)
我们来做个测试,在/etc/profile文件里面新增一个环境变量

1.2 实践
1) 在/etc/profile 文件中定义TOMCAT_HOME环境变量
#!/bin/bash
#定义一个自己的环境变量
TOMCAT_HOME=/opt/tomcat
export TOMCAT_HOME

2)查看环境变量TOMCAT_HOME的值
echo $TOMCAT_HOME
3)在另外一个shell程序中使用TOMCAT_HOME
#使用我们自定的环境变量
echo "tomcat_home=$TOMCAT_HOME"
#多行注释 用法为 :<<! !

注意:在输出TOMCAT_HOME 环境变量前,需要让其生效
source /etc/profile
2 位置参数变量
2.1 介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如: ./myshell.sh 100 200 ,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
2.2 基本语法
- $n (功能描述:n为数字,$0代表命令本身,$1-$9 代表第一到第九个参数,十以上的 参数需要用大括号包含,比如${10})
- $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
- $@ (功能描述:这个变量也代表命令行中所有的参数,$@ 把所有的参数区分对待)
- $# (功能描述:这个代表代表命令行中所有参数的个数)
2.3 位置参数变量应用实例
案例:编写一个shell脚本positionPara.sh ,在脚本中获取到命令行的各个参数信息
#!/bin/bash
#获取到各个参数
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "参数个数=$#"
执行
#赋予权限
chomd 744 ./positionPara.sh
./ positionPara.sh 30 60

3 预定义变量
3.1 基本介绍
就是shell 设计者事先已经定义好的变量,可以直接在shell脚本中使用
3.2 基本语法
- $$ (功能描述:当前进程的进程号(PID))
- $! (功能描述:后台运行的最后一个进程的进程号(PID))
- $?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了)
3.3 应用实例
在一个shell脚本中简单使用一下预定义变量
#!/bin/bash
echo "当前的进程号=$$"
#后台的方式运行 myShell.sh
./myShell.sh &
echo "最后的进程号=$!"
echo "执行的值=$?"

4 运算符
4.1 基本介绍
如何在shell中进行各种运算操作
4.2 基本语法
1) “$((运算式))” 或“$[运算式]”
2) expr m + n
#注意expr 运算符间要有空格
3) expr m - n
4) expr \*,/,% 乘,除,取
应用实例
案例1:计算(2+3)X 4 的值
- $((运算式))
#!/bin/bash
#第一方式$()
RESULT1=$(((2+3)*4))
echo "result1=$RESULT1"

- $[运算式]
#!/bin/bash
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"

- expr
#!/bin/bash
TEMP=`expr 2 + 3`
RESULT3=`expr $TEMP \* 4`
echo "result=$RESULT3"

- 案例2:请求出命令行的两个参数[整数]的和
#!/bin/bash
SUM=$[$1+$2]
echo "SUM=$SUM"

5 条件判断
判断语句
5.1 基本语法
[ condition ](注意condition 前后要有空格)
#非空返回true,可使用$? 验证(0为true,>1 为false)
5.2 应用实例
当[]这个里面有数值的时候,则为非空,为真,就返回true。 []里面没有数值,就为空,返回false
[ atguigu ] 返回true
[] 返回false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
5.3 常用判断条件
1) 两个整数的比较
= 字符串比较
-lt 小于(less than)
-le 小于等于
-eq 等于
-gt 大于(greater than)
-ge 大于等于
-ne 不等于
2)按照文件权限进行判断
-r 有读的权限 tips: 判断是否有权限, 就这么写就行了[ -r 文件 ]
-w 有些的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并非是一个目录
5.4 应用实例
案例1:“ok”是否等于“ok”
判断语句:
#!/bin/bash
if ["ok"="ok"]
then
echo "等于"
fi
案例2:23是否大于22
判断语句
#!/bin/bash
if[23 -gt 22]
then
echo "大于"
fi

案例3:/root/shell/aaa.txt 目录中的文件是否存在
判断语句
#!/bin/bash
if [-e /root/shell/aaa.txt]
then
echo "存在"
fi
Shell 学习(二)的更多相关文章
- linux shell学习二
参考:http://www.cnblogs.com/waitig/p/5531463.html Shell注释 Shell中的注释以“#”号开头,所有以“#”号开头的代码都会被解释器所忽略. 比如下面 ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- Shell 学习—AWK介绍
Shell 学习—AWK = = = 安装awk root@kiki-desktop:~/shell# apt-get install gawk gawk-doc = = = awk 是一种程序语言. ...
- shell 学习笔记2-shell-test
一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...
- Shell 学习(三)
目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...
- SHELL学习笔记三
SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...
随机推荐
- 分析无法进入Linux系统的原因
上文:http://www.cnblogs.com/long123king/p/3549701.html 1: static int __init kernel_init(void * unused) ...
- (转载)js调用打印机 打印整体或部分
本文转载自:https://www.cnblogs.com/lfhy/p/6802781.html 以下为原文内容: 有时前端的项目中需要添加打印的功能,首先要知道打印分为整体打印和局部打印两种,而局 ...
- 20140610 PP中可以绘制表格;PPT组合之后再加效果
PPT绘制表格(行人检测的cell和block) 动画:组合之后再加效果
- Java中的注解是如何工作的?
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解.这篇文章中,我将向大家讲述 ...
- vue组件的inheritAttrs属性
vue官网对于inheritAttrs的属性解释:如果你不希望组件的根元素继承特性,你可以在组件的选项中设置 inheritAttrs: false. 可能不是很好理解,我们可以举个例子来验证一下. ...
- jquery插件小集合
一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ...
- hdu6315 /// 线段树区间更新
题目大意: 给定n q 为序列的个数和操作的个数 给定n个数的序列b[]作为分母 初始全为0的序列a[]作为分子 两种操作 add l r 为a[]的l到r区间全部+1 query l r 为查询l到 ...
- Avito Cool Challenge 2018 C - Colorful Bricks
题目大意: 1*n的格子 可以用m种颜色涂色 已知从第2开始到第n个格子 有k个格子与其左边的格子颜色不同 求涂色的方案数 相当于把n个格子分成k+1份 可以递推出分成k+1份的不同的方案数(其实递推 ...
- mac下Python安装路径的说明
Python安装路径的说明 mac在安装Python时, 对不同的安装方式 不同的型号均会安装在不同的文件夹下 安装方式 路径 系统默认(2.7) /System/Library/Frameworks ...
- js字符与ASCII码互转的方法
大写字母A-Z对应的ASCII码值是65-90 小写字母a-z对应的ASCII码值是97-122 将字母转为ascii码的方法: 将ascii码转为对应字母的方法: