5. Bash的运算符

5.1 数值运算与运算符

5.1.1 declare 声明变量类型:#declare [+/-] [选项] 变量名

选项

说明

-

给变量设定类型属性

+

取消变量的类型属性

-i

将变量声明为整数型(integer)

-x

将变量声明为环境变量

-p

显示变量被声明的类型。

(1)数值运算——方法1:

#aa=

#bb=

#declare –i cc=$aa+$bb  //将cc声明为整型

(2)数值运算——方法2,使用expr或let数值运算工具。

  #dd=$(expr $aa + $bb) (注意“+”两侧必须有空格,其中的“$()”表示获得小括号内系统命令执行的结果)

(3)数值运算——方法3:$((运算式))”或“$[运算式]” (注意是$()的括号起的部分表示系统命令,而$(())双小括号表示数值运算!)

【编程实验】变量声明和数值运算

#!/bin/bash

aa=
bb= #显示变量aa的类型
declare -p aa #将aa设为环境变量
export aa #再次显示变量aa的类型
declare -p aa #数值运算:方法1
declare -i cc=$aa+$bb #数值运算:方法2
dd=$(expr $aa + $bb) #数值运算:方法3
ee=$(($aa+$bb))
ff=$[$aa+$bb] echo "cc=$cc"
echo "dd=$dd"
echo "ee=$ee"
echo "ff=$ff"

5.1.2 运算符

优先级

运算符

说明

13

-,+

单目负,单目正

12

!,~

逻辑非、按位取反或补码

11

*,/,%

乘、除、取模

10

+,-

加、减

9

<<,>>

按位左移、按位右移

8

< =, > =,<,>

小于或等于、大于或等于、小于、大于

7

==,!=

等于、不等于

6

&

按位与

5

^

按位异或

4

按位或

3

&&

逻辑与

2

||

逻辑或

1

=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=

赋值、运算且赋值

5.2 变量测试与内容替换

变量置换方式

变量y没有设置

变量y为空值

变量y设置值

x=${y-新值}

x=新值

x为空

x=$y

x=${y:-新值}

x=新值

x=新值

x=$y

x=${y+新值}

x为空

x=新值

x=新值

x=${y:+新值}

x为空

x为空

x=新值

x=${y=新值}

x=新值

y=新值

x为空

y=值不变

x=$y

y值不变

x=${y:=新值}

x=新值

y=新值

x=新值

y=值不变

x=$y

y值不变

x=${y?新值}

新值输出到标准错误输出(就是屏幕)

x为空

x=$y

x=${y:?新值}

新值输出到标准错误输出

新值输出到标准错误输出

x=$y

(1)可通过x的值来判断y是否被设置或为空值

(2)测试x=${y-新值}

#unset y   //删除变量y

#x=${y-new}

#echo $x  //输出new,因为变量y不存在,所以x=new

6. 环境变量配置文件

6.1 配置文件

(1)source命令:强制让配置文件生效

  #source 配置文件,或

  #. 配置文件(注意,“.”与配置文件之间有空格

(2)环境变量配置文件

  环境变量配置文件主要是定义对系统的操作环境生效的系统默认环境变量比如PATH、HINSTSIZE、PS1、HOSTNAME等默认环境变量

6.2 配置文件的作用

(1)配置文件的调用顺序

(2)主要的配置文件

文件

作用

备注

/etc/profile

①USER变量

②LOGMANAE变量

③MAIL变量

④PATH变量

⑤HOSTNAME、HISTSIZE变量

⑥umask

⑦调用/etc/profile.d/*.sh文件

对所有用户生效

/etc/profile.d/*.sh

①/etc/profile.d/目录下存放一些与颜色语言等相关的配置文件。

②调用/etc/sysconfig/i18n配置文件(语言环境,如UTF-8)

/etc/bashrc

①PS1变量(登录提示符)

②umask

③PATH变量

④调用/etc/profile.d/*.sh文件

~/.bash_profile

①调用了~/.bashrc文件

②在PATH变量后面加入了:“$HOME/bin”这个目录。

对当前用户生效,放于家目录并且为隐藏文件。

~/.bashrc

①定义默认别名

②调用/etc/bashrc文件

6.3 其他配置文件和登录信息

(1)注销时生效的环境变量配置文件:~/.bash_logout

(2)历史命令配置文件:~/bash_history

(3)Shell登录信息

  ①本地终端欢迎信息:/etc/issue(只能本地登录才能看到这些信息)

转义符

作用

\d

显示当前系统日期

\s

显示操作系统名称

\l

显录登录的终端号,这个比较常用

\m

显示硬件体系结构,如i386、i686等。

\n

显示主机名

\o

显示域名

\r

显示内核版本

\t

显示当前系统时间

\u

显示当前登录用户的序列号

  ②远程终端欢迎信息:/etc/issue.net

    A.转义符在/etc/issue.net文件中不能使用

    B.是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(要重启SSH服务,#service sshd restart)

  ③登录后欢迎信息:/etc/motd,不管是本地登录还是远程登录,都可以显示此欢迎信息。但他是登录后才会显示的信息,不像前两者是登录之前显示的信息。

第9章 Shell基础(4)_Bash的运算符及环境变量配置文件的更多相关文章

  1. Shell编程之运算符和环境变量配置文件

    一.shell运算符:    declare命令:         declare    -i 变量名     #声明变量        eg. movie[o]=dzp     #定义数组      ...

  2. 第9章 Shell基础(2)_Bash基本功能

    3. Bash的基本功能 3.1 历史命令与命令补全 (1)历史命令:#history [选项] [历史命令保存文件] ①选项:-c:清空历史命令: -w:把缓存中的历史命令写入文件~/.bash_h ...

  3. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  4. Linux Shell基础 环境变量配置文件

    source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...

  5. 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明

    目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...

  6. 『忘了再学』Shell基础 — 23、其他环境变量配置文件

    目录 1.注销时生效的环境变量配置文件 2.其他配置文件 3.Shell登录信息相关文件 (1)/etc/issue文件说明 (2)/etc/issue.net文件说明 (3)/etc/motd文件说 ...

  7. Shell学习笔记 - 环境变量配置文件(转)

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  8. Shell学习笔记 - 环境变量配置文件

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  9. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

随机推荐

  1. ES6转换器之Babel

    ES6部分功能没有支持,所以想学习ES6,得先有个转换器,就是将ES6的代码转换为ES5. 我这里用的是Gulp + Bable的形式来将ES6转换为ES5的. 前提: (1).Gulp和Bable都 ...

  2. MUI跨域请求数据的例子:

                <,                     ,                 success: function(data) {                    ...

  3. 关于gitignore文件的创建与使用

    在我们使用github提交本地代码时,有些库文件和日志文件是不必要提交的,那如何处理这个问题呢?这个时候我们就会用到.gitignore文件了. 该篇博客我会介绍如何创建.gitignore,以及如何 ...

  4. 关于css清除浮动,解决内容溢出的问题

    以前在布局的时候总会遇到这样的问题,比如我想让整体的内容居中,所以会这样写, .main-content{ width:960px:height:300px;margin:0px auto; } 然后 ...

  5. WebComponent魔法堂:深究Custom Element 之 标准构建

    前言  通过<WebComponent魔法堂:深究Custom Element 之 面向痛点编程>,我们明白到其实Custom Element并不是什么新东西,我们甚至可以在IE5.5上定 ...

  6. Moon.Orm 配置说明

    一.在线技术文档: http://files.cnblogs.com/files/humble/d.pdf   二.使用的大致流程   1.首先下载代码生成器,可以一键生成项目Model层;(其中含有 ...

  7. IOS学习之-私人通讯录

    通过一段时间IOS的学习完成了一个简单的应用,"私人通讯录". 运行效果如下图: 1.登录页 2.通讯录列表 3.添加 4.编辑 5.删除 6.注销 总视图结构如下图: 总结本程序 ...

  8. ASP.NET从MVC5升级到MVC6 RC2 总目录 - 发布在RC2Release之后

    序言 随着MVC6RC2的推出,MVC6的脚步越来越近了.但是在我们的手里,有大批量的MVC5的项目.如何将MVC5升级到MVC6,将是一个很大的课题.微软官方暂时没有一个升级指导,或者一个迁移工具, ...

  9. 数据库表结构设计方法及原则(li)

    数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满 ...

  10. 评《撸一段 SQL ? 还是撸一段代码? 》

    最近看到一篇博客<撸一段 SQL ? 还是撸一段代码?>,文章举例说明了一个连表查询使用程序code来写可读性可维护性更好,但是回帖意见不一致,我想作者在理论层面没有做出更好的论述,而我今 ...