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 学习(二)的更多相关文章

  1. linux shell学习二

    参考:http://www.cnblogs.com/waitig/p/5531463.html Shell注释 Shell中的注释以“#”号开头,所有以“#”号开头的代码都会被解释器所忽略. 比如下面 ...

  2. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  3. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  4. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  5. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  6. Shell 学习—AWK介绍

    Shell 学习—AWK = = = 安装awk root@kiki-desktop:~/shell# apt-get install gawk gawk-doc = = = awk 是一种程序语言. ...

  7. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

  8. Shell 学习(三)

    目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...

  9. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

随机推荐

  1. new delete

    malloc/free是标准的库函数,而new/delete是操作符 匹配使用原则:malloc(calloc/realloc)和free 以及new/new[] 和delete/delete[]; ...

  2. error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?

    解决方案: 属性>预编译头>不使用预编译头>应用

  3. C语言——二维数组

    目录 二维数组 一.二维数组的定义 二.二维数组的初始化 三.通过赋初值定义二维数组的大小 四.二维数组与指针 二维数组 一.二维数组的定义 类型名 数组名[ 常量表达式1 ][ 常量表达式2 ] i ...

  4. linux 编译指定库、头文件的路径问题(转)

    1. 为什么会出现undefined reference to 'xxxxx'错误? 首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得 ...

  5. null == null 或者 [] == [] 或者{} == {} 或者alert(1|| 2) 或者alert(1&& 2) 结果及原理

    相信面试的小伙伴们都会遇到此头大的问题,是不是很想骂一句面试官:你白痴啊,鬼都用不着的东西拿来问,你还别说,这些看似用不着的东西却包含着最基础的原理,那我们来理一理. 1.alert(1||2)和 a ...

  6. D3.js 动画 过渡效果 (V3版本)

    一 . 过渡的启动   启动过渡效果,与以下四个方法相关:   d3.transition([selection],[name]) //创建一个过渡对象.但是由于每个选择集中都有transition( ...

  7. 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517

    [整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...

  8. vue实现curd功能

    一.实现效果 二.实现 (一)实现增加用户功能 Vuserlist组件中 <template> <div class="panel panel-default"& ...

  9. HttpUrlConnection类基本使用

    这个类用来模拟浏览器向服务器发送请求和接收响应 注意: HttpUrlConnection对象简称huc对象 1)获取huc对象向url构造中传递url字符串,并调用openconnection方法即 ...

  10. delphi 键盘常用参数(PC端和手机端 安卓/IOS)

    常数名称(红色手机端) 十六进制值 十进制值 对应按键(手机端) Delphi编程表示(字符串型)_tzlin注 0 0 大键盘Delete键 #0 VK_LBUTTON 1 1 鼠标的左键 #1 V ...