shell编程bash特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程bash特性相关的知识,希望对你有一定的参考价值。

bash特性


  终端,附着在终端的接口程序:

GUI:KDE, GNome, Xfce

 CLI:/etc/shells

bash

zsh

fish


  bash的特性:

命令行展开:~, {}

 命令别名:alias, unalias

 命令历史:history

 文件名通配:glob

 快捷键:Ctrl+a, e, u, k, l

 命令补全:$PATH

 路径补全:


  bash特性之:命令hash

缓存此前命令的查找结果:key-value

 key:搜索键

 value:值


hash命令:

 hash:列出

 hash -d COMMAND:删除

 hash -r:清空


  bash的特性之:变量

程序:指令+数据

 指令:由程序文件提供;

 数据:IO设备、文件、管道、变量


程序:算法+数据结构

 数据结构?


变量名+指向的内存空间


变量赋值:name=value

变量类型:存储格式、表示数据范围、参与的运算

 编程语言:

强类型变量

弱类型变量:

 bash把所有变量统统视作字符型;

 bash中的变量无需事先声明;相当于,把声明和赋值过程同时实现;

声明:类型,变量名

变量替换:把变量名出现的位置替换为其所指向的内存空间中数据;

变量引用:${var_name}, $var_name

变量名:变量名只能包含数字、字母和下划线,而且不能以数字开头;

 变量名:见名知义,命名机制遵循某种法则;不能够使用程序的保留字,例如if, else, then, while等等;

bash变量类型:

 本地变量:作用域仅为当前shell进程;

 环境变量:作用域为当前shell进程及其子进程;

 局部变量:作用域仅为某代码片断(函数上下文);


 位置参数变量:向执行脚本的shell进程传递的参数;

 特殊变量:shell内置的有特殊功用的变量;

$?:

 0:成功

 1-255:失败


 本地变量:

变量赋值:name=value

变量引用:${name}, $name

 "":变量名会替换为其值;

 ‘‘:变量名不会替换为其值;

查看变量:set

撤销变量:unset name

 注意:此处非变量引用;


 环境变量:

变量赋值:

 (1) export name=value

 (2) name=value

export name

 (3) declare -x name=value

 (4) name=value

declare -x name

 变量引用:${name}, $name


 注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境

PATH, HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL, SHELL, HOME, UID, PWD, OLDPWD


 查看环境变量:export, declare -x, printenv, env

 撤销环境变量:unset name


只读变量:

 (1) declare -r name

 (2) readonly name


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


  bash特性之多命令执行:

~]# COMMAND1; COMMAND2; COMMAND3; ...


逻辑运算:

 运算数:真(true, yes, on, 1)

 假(false, no, off, 0)


 与:

1 && 1 = 1

1 && 0 = 0

0 && 1 = 0

0 && 0 = 0

 或:

1 || 1 = 1

1 || 0 = 1

0 || 1 = 1

0 || 0 = 0

 非:

! 1 = 0

! 0 = 1

 异或:


短路法则:

 ~]# COMMAND1 && COMMAND2

 COMMAND1为“假”,则COMMAND2不会再执行;

 否则,COMMAND1为“真”,则COMMAND2必须执行;


 ~]# COMMAND1 || COMMAND2

 COMMAND1为“真”,则COMMAND2不会再执行;

 否则,COMMAND1为“假”,则COMMAND2必须执行;


 示例:~]# id $username || useradd $username


以上是关于shell编程bash特性的主要内容,如果未能解决你的问题,请参考以下文章

CentOS系统Shell编程语言基础之Bash的基础特性简介

shell脚本-编程前奏-bash特性

shell脚本-编程前奏-bash特性

shell编程笔记

bash脚本编程基础及配置文件

Day01 Shell脚本编程