Shell使用笔记

## 1:变量
* ___变量种类___
- 数字
- 字符串("、‘) 如果字符串中不包含空格及制表符可以不用“或’
- ” 输出时会先解析里面的变量和命令
- ’ 单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来) 也会把它们原样输出
- 数组 只支持一维数组,大小可扩展
* ___只读变量 readonly___ (设置为只读后,不允许再给其赋值)
* ___删除变量 unset___

## 2:特殊变量
| 名称 | 说明 |
| ---- | ---- |
| $$ | 当前shell的进程ID
| $0 | 当前脚本文件名
| $n | 传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
| $# | 传递给脚本或函数的参数个数。 |
| $* | 传递给脚本或函数的所有参数。 |
| $@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同。[^mark] |
| $? | 上个命令的退出状态,或函数的返回值(成功为0 失败为1) |

[^mark]:当被“包含时 $*会将参数作为一个整体,$@会将参数拆开

## 3:变量替换、命令替换、转义字符
* ___转义字符___

| 转义字符 | 说明 |
| ---- | ---- |
| \\\ | 反斜杠 |
| \a | 警报 响铃 |
| \b | 退格 删除键 |
| \f | 换页(FF),将当前位置移到下页开头 |
| \r | 换行 |
| \n | 回车 |
| \t |水平制表符 tab |
| \v | 垂直制表符 |

* ___变量替换___

| 形式 | 说明 |
| ---- | ---- |
|${var}|变量本来的值|
|${var:-word}|如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。|
|${var:?message}|如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。|
|${var:+word}|如果变量 var 被定义,那么返回 word,但不改变 var 的值。|

* ___命令替换___
将命令包含在反引号中,即可把命令的执行结果赋值给变量


## 4:运算符(只支持数字或可以转为数字的字符串)
* ___关系运算符___

|运算符|说明|
|----|----|
|-eq|检测两个数是否相等,相等返回 true|
|-ne|检测两个数是否相等,不相等返回 true|
|-gt|检测左边的数是否大于右边的,如果是,则返回 true|
|-lt|检测左边的数是否小于右边的,如果是,则返回 true|
|-ge|检测左边的数是否大等于右边的,如果是,则返回 true|
|-le|检测左边的数是否小于等于右边的,如果是,则返回 true|

* ___布尔运算符___

|运算符|说明|
|----|----|
|!|非运算|
|-o|或运算|
|-a|与运算|

* ___字符串运算符___

|运算符|说明|
|----|----|
|=|检测两个字符串是否相等,相等返回 true|
|!=|检测两个字符串是否相等,不相等返回 true|
|-z|检测字符串长度是否为0,为0返回 true|
|-n|检测字符串长度是否为0,不为0返回 true|
|str|检测字符串是否为空,不为空返回 true|

* ___文件测试运算符___

|操作符|说明|
|----|----|
|-b file|检测文件是否是块设备文件,如果是,则返回 true|
|-c file|检测文件是否是字符设备文件,如果是,则返回 true|
|-d file|检测文件是否是目录,如果是,则返回 true|
|-f file|检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true|
|-g file|检测文件是否设置了 [SGID](https://www.cnblogs.com/Jimmy1988/p/7260215.html) 位,如果是,则返回 true|
|-k file|检测文件是否设置了粘着位([Sticky Bit](https://www.cnblogs.com/Jimmy1988/p/7260215.html)),如果是,则返回 true|
|-p filee|检测文件是否是具名管道,如果是,则返回 true|
|-u file|检测文件是否设置了 [SUID](https://www.cnblogs.com/Jimmy1988/p/7260215.html) 位,如果是,则返回 true|
|-r file|检测文件是否可读,如果是,则返回 true|
|-w filee|检测文件是否可写,如果是,则返回 true|
|-x file|检测文件是否可执行,如果是,则返回 true|
|-s file|检测文件是否为空(文件大小是否大于0),不为空返回 true|
|-e file|检测文件(包括目录)是否存在,如果是,则返回 true|

posted @ 2020-03-27 13:22  迷途的羔羊123  阅读(27)  评论(0)    收藏  举报