今天是参加笔记活动的的第10天
运算符和引用
| 类型 | 符号 | 作用 | 用法 | ||||
|---|---|---|---|---|---|---|---|
| 算术运算符 | + - * / % | & | 常规运算 | ||||
| 逻辑运算符 | && ! | ||||||
| 比较运算符 | == != < > | ||||||
| 引号 | 双引号"" | 部分引用,仅仅$`\保留作用 | foo="${a}123" | ||||
| 引号 | 单引号'' | 完全引用,原样输出 | foo='foo$a' | ||||
| 引号 | 反引号`` ` | 执行命令 | foo= ``ls -a` | ||||
| 圆括号 | (()) | 算术运算 | foo=$((1+2)) | ||||
| 圆括号 | () | 执行命令 | $(ls -a) | ||||
| 命令连接 | cmd1执行完且返回码非0,则继续执行cmd2 | cmd1 | cmd2 | ||||
| 命令连接 | && | cmd1执行完且返回码为0,则继续执行cmd2 | cmd1 && cmd2 | ||||
| 命令连接 | ; | cmd1,cmd2串行执行 | cmd1 ; cmd2 | ||||
| 后台运行 | & | 让命令在后台运行,可与nohup一起使用 | cmd & |
双引号:部分引用,使用这种引用时,$、`(反引号)、(转义符) 这 3 个还是会解析成特殊的意义 单引号:完全引用,只原样输出 反引号:执行命令 cmd & 实现让命令在后台运行 使用方法一的时候,当我们关闭终端,命令就会停止运行。加上nohup可以在关闭终端后不停止命令
管道
管道与管道符|,作用是将前一个命令的结果传递给后面的命令
语法
cmd1 | cmd2
要求
管道右侧的命令必须能接受标准输入才行,比如grep命令,ls,mv等不能直接使用,可以使用xargs预处理
注意
管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail 设置shell遇到管道错误退出
#!/bin/bash
cat platform.access.log | grep ERROR
netatat -an | grep ESTABLISHED | wc -l
find . -maxdepth 1 -name "*.sh" |xargs ls -l
如果需要互通,比如第一个命令的返回传递给第二个命令,就需要用到管道了,管道的本质就是将多个程序进行了一个连接,和信号一样,也是进程通信的方式之一
重定向
输出重定向符号
> 覆盖写入文件
>> 追加写入文件
2> 错误输出写入文件
&> 正确和错误输出统一写入到文件中