io
I/O
重定向不是命令
-
程序自身都有I/O
- 0: 标准输入
- 1: 标准输出
- 2:错误输出
-
控制程序I/O位置
-
一切皆文件
- /proc/$$/fd
-
程序是否处理I/O
-
重定向绑定顺序:从左到右
ls / /hello 1 > log.out #正确输出结果导入到log.out中
ls / /hello 1 > log.out 2>log.err #正确输出导入到log.out 错误输出导入到log.err
将用户控制台的输入赋值给aaa变量
read在不提供参数的时候,会将用户的输入存储在REPLY变量中
[root@node1 ~]# read
abc
[root@node1 ~]# echo $REPLY
abc
如果提供了参数,则赋值给指定的参数
[root@node1 ~]# read aaa
nihao
[root@node1 ~]# echo aaa
nihao
[root@node1 test]# vim rd.sh
#!/bin/bash
read -p "请输入一个整数:" num
echo $num
read -p"再输入一个整数:"
echo $REPLY
[root@node1 ~]# chmod +x rd.sh
[root@node1 ~]# ./rd.sh
请输入一个整数:100
100
再输入一个整数:3
3
[root@node1 ~]# sh -x read.sh
+ read -p "请输入一个整数:" num
请输入一个整数:100
100
+ read -p"再输入一个整数:"
再输入一个整数:3
3
显示脚本执行过程:
[root@node1 ~]# sh -x read.sh
将标准输入重定向到字符串,read读取后赋值给指定的变量:
<<<将标准输入重定向到字符串
[root@node1 ~]# read aaa 0<<<"hello"
[root@node1 ~]# echo $aaa
hello
用在脚本中用于向控制台打印n行
[root@node1 ~]# cat 0<<CATEOF
>aaa
>bbb
>ccc
>CATEOF
aaa
bbb
ccc
exec:使用指定的命令替换当前shell命令。
创建文件描述符:
exec 8<> /dev/tcp/www.baidu.com/80 # 以读写方式打开到www.baidu.com的80端口的tcp连接
echo -e "GET / HIIP/1.0\n" >& 8 # 重定向到8文件描述符
cat <& 8 # 从文件描述符8读取信息以读写方式打开到www.baidu.com的80端口的tcp连接
....
cd /proc/$$/fd # 查看文件描述符
ll

浙公网安备 33010602011771号