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. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  2. 代码的坏味道(8)——被拒绝的馈赠(Refused Bequest)

    坏味道--被拒绝的馈赠(Refused Bequest) 特征 子类仅仅使用父类中的部分方法和属性.其他来自父类的馈赠成为了累赘. 问题原因 有些人仅仅是想重用超类中的部分代码而创建了子类.但实际上超 ...

  3. HTML5学习

    HTML5动画效果 http://www.html5tricks.com/30-more-html5-apps.html http://www.html5tricks.com/category/htm ...

  4. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  5. java集合你了解多少?

    用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...

  6. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  7. centos下升级mysql后遇到的小问题

    记录今天遇到的一个小问题, 写一个app访问接口涉及到通过存储过程反馈多个结果集,但是反回多个结果集的存储过程,调用之后只能反回一个了,而且奇怪的是,即使直接在mysql上同时执行两条查询语句,第一条 ...

  8. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

  9. node使用xml-writer生成本地XML文件实例

    npm中xml-writer文档的链接地址:https://www.npmjs.com/package/xml-writer npm中的文档比较简单,而且生成本地xml文件的demo并不正确.本篇是对 ...

  10. iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)

    好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...