我们要想能够实现与主机交互,得有一个终端以及附着在终端上的接口程序,接口程序有两大类,分别是GUI(KDE、GNome、Xfce)和CLI(/etc/shells)

bash特性之命令hash

  • 缓存此前命令的查找结果,缓存下的内容成为命令哈希
  • 执行命令时并不是上来就直接找path环境变量下所给定的各路径下的程序文件,而是先去找缓存,看缓存中是否有直接找到的完整路径的结果,如果有,直接引用缓存中的命令,如果没有才去发起查找操作,这就叫命令哈希
  • hash本身是一个内部命令
  • hash记住或显示程序位置,确定并记住每一个给定NAME名称的命令的完整路径,如果不提供参数,则显示已经记住的命令的信息

选项

  • -d:忘记每一个已经记住的命令的位置
  • -l:
  • -r:忘记所有记住的位置
hash #列出
hash -d cat #清空cat
hash -r #清空所有

bash的特性之变量

程序就是由指令加数据组成,指令由程序文件提供,数据可以通过IO设备输入、文件、管道、变量
程序也可以说是由算法+数据结构组成

  • 变量=变量名+指向的内存空间
  • 变量赋值:把要存储的数据存储到变量名所指向的内存空间的过程就叫变量赋值,对于shell而言,变量赋值就是name=value
  • 变量类型:指的是变量值的存储类型,一旦确定变量类型或者数据类型,就决定了这些数据如何存储,或者存储格式,且表示了数据范围及能够参与的运算
  • 对于编程语言来讲,根据它们对于类型要求是否严格分为弱类型变量和强类型变量编程语言,其中bashshell是一种弱类型变量的编程语言,== 把所有变量统统视为字符型==,另外bashshell不支持浮点数据除非借助外在工具来进行
  • bashshell的变量无需事先声明,相当于把声明和赋值过程同时实现,声明意味着声明类型和定义变量名称
  • 变量替换:把变量名出现的位置替换为其所指向的内存空间中数据
  • 变量引言:${var_name}, $var_name
  • 变量名:变量名只能使用字母、数字加下划线组成的字符组合,但不能以数字开头;变量名要见名知义,且命名机制遵循某种法则;不能使用程序的保留字,例如if, else, then, while等,因为它们用于控制程序的执行流程
  • bash变量类型:
    【1】本地变量:其作用域仅是当前shell进程
    变量赋值:name=value
    变量引用:${name}, $name,"":变量名会替换为其值,’’:变量名不会替换为其值
    查看变量:set
    撤销变量:unset,注意此处非变量引用
    【2】环境变量:作用域是当前shell进程及其子进程
    变量赋值:
    (1)export name=value
    (2)name = value
    export name
    (3)declare -x name=value
    变量引用:${name}, $name
    注意:bash内嵌了许多环境变量(通常为全大写子字符),用于定义bash的工作环境,例如PATH、HISTSIZE、HISTFILESIZE、HISTCONTROL、SHELL、HOME、UID、PWD、OLDPWD
    查看环境变量
export #查看环境变量
declare -x #查看环境变量
printenv #显示环境变量
env #显示环境变量

撤销环境变量:unset name
只读变量:只读变量无法重新赋值,并且不支持撤销,存活时间为当前shell进程的生命周期,随shell进程终止而终止

declare -r name
readonly name

【3】局部变量:当前shell进程中的某一个代码片段,比如函数
【4】位置参数变量:向执行脚本的shell进程传递的参数
【5】特殊变量:shell内置的有特殊功用的变量,比如$?:用于保存上一条命令的执行状态结果,0:失败,1-255:成功

bash特性之多命令执行

COMMAND1; COMMAND2; COMMAND3;…#执行顺序是依次执行,命令之间没有逻辑关系

补充:
逻辑运算:
运算数:真(true,yes,on,1)/ 假(false,on,off,0)
注意:对于命令状态的运行结果,0表示真
【1】与
1 && 1 = 1
1 && 0 = 1
0 && 1 = 0
0 && 0 = 0
【2】或
1 || 1 = 1
1 || 0 = 1
0 || 1 = 1
0 || 0 = 0
【3】非
! 1 = 0
! 0 = 1
短路法则:与运算中,前一个命令失败,后一个命令 就不会执行???执行为真不是0嘛????

COMMAND1 && COMMAND2 #将两个命令的执行状态结果做与运算,COMMAND1为假,则COMMAND2必须执行,1为真,2必须执行
COMMAND1 || COMMAND2 #COMMAND1为真,则COMMAND2不会执行,1为假,则2必须执行

id user1 || useradd user1 #若user1不存在则增加用户user1

Linux12-bash变量和逻辑运行相关推荐

  1. bash变量和逻辑运算

    回顾: 用户管理,权限管理,install, mktemp 用户管理:无非就是计算机来实现资源隔离的一种工具 linux用户是只有两级结构的,虽然我们可以把它分为三级,但是事实上他只有两级层次,无非就 ...

  2. shell脚本编程学习笔记2(xdl)——Bash变量

    shell脚本编程学习笔记2--Bash变量 1,变量简介 1,计算机内存单元2,设置规则字母数组下划线组成,不能以数字开头Bash中,默认类型字符串型,变量类型可修改 2,Bash变量规则 1,变量 ...

  3. shell脚本编程学习笔记3(xdl)——Bash变量的运算与测试

    Bash变量的运算与测试 1,数值运算和运算符 declare申明变量类型也就是说变量运算没有申明的时候,会以字符串形式的拼接, 只有把变量声明为数值型的时候才可以运算,申明变量为数值型有 三种方法方 ...

  4. 沈超+shell课件_[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量.ppt...

    [Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量 第十讲 Shell基础 主讲人:沈超(/lampsc) 交流论坛: 课程大纲 10.1 Shell概述 1 ...

  5. linux bash 变量_如何在Linux上的Bash中设置环境变量

    linux bash 变量 fatmawati achmad zaenuri/Shutterstock Fatmawati achmad zaenuri / Shutterstock There's ...

  6. java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合

    java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合 1.引入pom <dependency><groupId>org.codehaus.groovy& ...

  7. 如何将 Bash 命令的输出赋值给 Bash 变量

    有时需要将 Bash 命令的输出保存以作他用.Bash 提供了两种将 Bash 命令的输出赋值给 Bash 变量的方法. 方法一: variable=$(command) variable=$(com ...

  8. bash 变量加双引号与不加双引号效果大不相同!

    bash 变量加双引号与不加双引号效果大不相同! 做一个实验: temp_var=$(route -n) temp_var 变量加""是这样的, 可认为是原样输出 hjj@hjj- ...

  9. JDK开发环境变量配置及运行JAVA第一个程序

    JDK开发环境变量配置及运行JAVA第一个程序 1.JDK开发环境变量配置及运行JAVA第一个程序 2. 总结 一.下载并安装JDK 二.环境变量的配置 三.第一个程序 总结 1.JDK开发环境变量配 ...

最新文章

  1. 获取磁盘空间大小计算成看k,m,G
  2. OGNL表达式语言中的#和$的区别
  3. mysql varchar最多可以存多少汉字_MySql的这几个坑你踩过没?真是防不胜防!
  4. 【Liunx服务器】阿里云服务器下部署多个tomcat服务
  5. 前端本地使用线上数据
  6. 排序算法浅析(一)比较排序算法
  7. 解决matplotlib的中文问题
  8. office文档 在线预览 (doc、ppt、xls)
  9. [转帖]select提高并发,select和poll、epoll的区别(杂)
  10. TimescaleDB 简单试用
  11. nosql数据库之Redis持久化、备份和主从配置
  12. Android SDK 下载安装及配置
  13. java你应该学会什么
  14. React09——使用脚手架编程
  15. LivePlayer H5播放器、在react中使用
  16. linux驱动开发之九鼎板载蜂鸣器驱动测试【转】
  17. 举头皮皮虾机器人_一种仿生水下皮皮虾机器人通信系统的制作方法
  18. iOS开发之《英语词汇学习》
  19. android遥控器管理,Android 遥控器适配
  20. 基于web的家庭理财系统

热门文章

  1. 全民K歌推荐后台架构
  2. 除了腾讯阿里,中国最牛的风投机构,其实是合肥市政府!
  3. 分布式系统中只有两个难题
  4. 生态伙伴 | Tita入驻飞书啦,从目标制定到项目执行,帮你一站式解决!
  5. 在leangoo里怎么创建看板,更改看板名称?
  6. 当定时任务遇上随机数
  7. 最佳置换算法(OPT)
  8. 排序算法---快速排序(java版)
  9. 基于ACR的镜像仓库管理,云计算技术与应用实验报告
  10. php 工资 2018,2018年我国公务员级别工资标准