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. 理清JavaScript正则表达式--上篇

    在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...

  2. 【NLP】基于机器学习角度谈谈CRF(三)

    基于机器学习角度谈谈CRF 作者:白宁超 2016年8月3日08:39:14 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都 ...

  3. 【转】基于linux下的dm9000网卡移植全分析

    转自:http://blog.sina.com.cn/s/blog_6abf2c04010189ui.html DM9000可以直接与ISA总线相连,也可以与大多数CPU直接相连.Mini2440采用 ...

  4. 解决新版Android studio导入微信支付和支付宝官方Demo的问题

    最近项目要用到支付宝支付和微信支付,本想使用第三方支付框架ping++或者BeeCloud的,但是由于他们的收费问题,让我望而却步,而且公司给了相应的公钥.私钥和APPID等,所以就用下开放平台的呗. ...

  5. Visual Studio 2013 Ultimate因为CodeLens功能导致Microsoft.Alm.Shared.Remoting.RemoteContainer.dll高CPU占用率的折中解决方案

    1.为什么Microsoft.Alm.Shared.Remoting.RemoteContainer.dll的CPU占用率以及内存使用率会那么高? 在Visual Studio 2013 Ultima ...

  6. win2008R2 下解决关于mysql odbc无法正常工作问题

    1.安装 mysql-connector-odbc-5.1.1-win32 下载 2.确保IIS中“启用32位应用程序”为True 3.连接字符串: mysql_connstr="Drive ...

  7. java类的初始化顺序

    在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...

  8. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  9. Json CPP 中文支持与入门示例

    在每一个Json Cpp自带*.cpp文件头加上: #include "stdafx.h" 将Json Cpp对自带的头文件的引用修改为单引号方式,例如json_reader.cp ...

  10. (转)SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步

    最近在琢磨主从数据库之间的同步,公司正好也需要,在园子里找了一下,看到这篇博文比较详细,比较简单,本人亲自按步骤来过,现在分享给大家. 在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错 ...