第9章 Shell基础(4)_Bash的运算符及环境变量配置文件
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的运算符及环境变量配置文件的更多相关文章
- Shell编程之运算符和环境变量配置文件
一.shell运算符: declare命令: declare -i 变量名 #声明变量 eg. movie[o]=dzp #定义数组 ...
- 第9章 Shell基础(2)_Bash基本功能
3. Bash的基本功能 3.1 历史命令与命令补全 (1)历史命令:#history [选项] [历史命令保存文件] ①选项:-c:清空历史命令: -w:把缓存中的历史命令写入文件~/.bash_h ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明
目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...
- 『忘了再学』Shell基础 — 23、其他环境变量配置文件
目录 1.注销时生效的环境变量配置文件 2.其他配置文件 3.Shell登录信息相关文件 (1)/etc/issue文件说明 (2)/etc/issue.net文件说明 (3)/etc/motd文件说 ...
- Shell学习笔记 - 环境变量配置文件(转)
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- Shell学习笔记 - 环境变量配置文件
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- Linux学习——shell编程之环境变量配置文件
小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...
随机推荐
- 【完全开源】微信客户端.NET版
目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页
系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI Datagrid在加载的时候会提交一些分页的信息到后台,我们需要根据这些信息来进行数据分页再次返回到前台 实 ...
- Android注解使用之ButterKnife 8.0注解使用介绍
前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...
- 常用数据结构-线性表及Java 动态数组 深究
[Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...
- SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划
1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...
- 透过HT for Web 3D看动画Easing函数本质
http://www.hightopo.com/guide/guide/plugin/form/examples/example_easing.html 50年前的这个月诞生了BASIC这门计算机语言 ...
- jQuery操作DOM元素
作为一个后端程序员,也是要和前端页面打交道的.最常见的场景莫过DOM元素操作和前端页面使用AJAX向服务器发送请求.实现上述两个功能当然可以使用原生js来完成,但在实际开发过程中很少这样做,通常会使用 ...
- ADO.NET存取数据库数据
步骤: //数据库连接串 string conStr = "......" //创建连接对象 SqlConnection connection = new SqlConnectio ...
- js正则表达式校验正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jdk源码分析ArrayDeque
ArrayDeque 数组循环队列,这个数据结构设计的挺有意思的. 据说此类很可能在用作堆栈时快于 Stack,在用作队列时快于 LinkedList. 一.容量 1.1默认容量是8=2^3 1.2指 ...