Shell脚本和编程 | 青训营笔记

115 阅读2分钟

变量

自定义变量(类型 ),当前shell(作用域),=(声明方式),字符串、整形、浮点型、日期型(规范)

环境变量(类型 ),当前shell及其子shell(作用域),export、declare -x(声明方式)

系统环境变量(类型 ),所有shell(作用域),启动加载(声明方式)

自定义变量

*(选项),给变量设定类型属性(含义)

*(选项),取消变量的类型属性(含义)

-a(选项),将变量声明为数组类型(含义)

-i(选项),将变量声明为整数型(含义)

-x(选项),将变量声明为环境变量(含义)

-r(选项),将变量声明为只读变量(含义)

-p(选项),显示指定变量的被声明的类型(含义)

系统环境变量

$0(变量名),当前shell名称/脚本名称(含义),1,1, 2等可以获取到传入参数(常见操作)

$#(变量名),传入脚本的参数数量(含义),if[$ #-gt 1](常见操作)

$*(变量名),传入脚本的所有参数(含义)

$?(变量名),上条命令执行的状态码(含义),if[$? -eq 0]

$PS1(变量名),命令提示符(含义),export PS1 = "\u@\h \w"

$HOME(变量名),用户主文件夹(含义),cd~

$PATH(变量名),全局命令的搜索路径(含义),PATH=$PATH:[新增路径]

运算符和引用

算数运算符(类型)+-*/|&(符号),常规运算(作用)

逻辑运算符(类型),|| && !(符号)

比较运算符(类型),== != < >(符号)

引号(类型),双引号""、单引号''、反引号``(符号)

圆括号(类型),(()),()(符号)

命令连接(类型),||、&&、;(符号)

后台运行(类型),&(符号)

管道

管道与管道符|,作用是将前一个命令的结果传递给后面的命令

语法:cmd1 | cmd2

要求:管道右侧的命令必须能接受标准输入才行

注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出

重定向

输出重定向符号

>: 覆盖写入文件

>>: 追加写入文件

2>: 错误输出写入文件

&>: 正确和错误输出统一写入到文件中

输入重定向符号

<

<<