01、程序运行环境输入与输出
标准输入 0
read a;echo $a
标准输出 1
echo ceshiren.com
错误输出
ls not_exist_dir
02、管道重定向
管道与管道之间可以重定向
管道与文件之间可以重定向
echo 11 > /tmp/1 --把11这个字符串重定向保存到/tmp/1这个路径1这个文件里面,会删除原文件里面的内容,替换成新内容
read var </tmp/1
echo $var
ls not_exist_dir > /tmp/output
ls not_exist_dir > /tmp/output 2>&1
03、管道连接
04、管道连接符 |
管道连接符 | 可以连接多个程序的执行
管道连接是以子进程的方式启动的
echo hogwarts | { read line; echo input is $line; }
curl https://ceshiren.com/categories.json \
| grep -o '{"id[^}]*}' \
| awk -F, '{print $2,$6}' \
| awk -F '"' '{print $7,$4}' \
| sed 's#:##' \
| sort -nr \
| head -5
05、管道执行的上下文控制
使用 { command; } 注意花括号与内部命令之间的空格与分号
使用控制逻辑 while read 组合
使用 $() ``
#这个方式无法获得变量x
echo hello world | read x; echo $x
#如下两个方式可以获得变量x
echo hello world | { read x; echo $x; }
echo hello world | while read x; do echo $x; done