shell基础知识02

来源:互联网 发布:c语言n位水仙花数程序 编辑:程序博客网 时间:2024/05/16 18:31

1.5、学习文件描述符和重定向

1.5.1、预备知识

当使用命令输出文本时,这些输出文本有可能是错误信息,也有可能是正常信息。可以通过文件描述符,将那些与特定描述符关联的文本提取出来

文件描述符是与一个打开的文件或数据流相关联的整数。文件描述符0、1和2是系统预留的
0-stdin(标准输入)
1-stdout(标准输出)
2-stderr(标准错误)

1.5.2、实战演练

1、重定向
>和>>都可以将文本重定向到文件,但是前者会先清空文件,再写入内容;而后者会将内容追加到文件的尾部

使用重定向操作符时,重定向的内容不会出现在终端,而是直接被导入文件。重定向操作符默认是标准输出,如果想使用特定的文件描述符,必须将描述符置于操作符之前

1.1、标准错误以及如何对它重定向
(1)一个命令执行并退出时,会返回一个退出状态,如果命令执行错误,会返回一个非0的退出状态,如果命令执行成功,会返回一个0的退出状态
运行echo $?,可以打印退出状态

(2)
# ls +
ls: 无法访问+: 没有那个文件或目录
# ls + > out.txt  ##没有使用文件描述符2,标准错误不会重定向
ls: 无法访问+: 没有那个文件或目录

# ls + 2> out.txt
null
# cat out.txt 
ls: 无法访问+: 没有那个文件或目录

# vi out.sh
#!/bin/bash
num7=1.5;
num8=1.6;
result=`echo $num7*$num8 |bc`;
result1=`$num7*$num8 |bc`  ##20行
result2=`echo "$num7*$num8" |bc`
echo "result=$result result1=$result1 result2=$result2"
~
# sh ./out.sh 
./out.sh: line 5: 1.5*1.6: command not found
result=2.4 result1= result2=2.4

# sh ./out.sh 2>stderr.txt 1>stdout.txt
# cat stderr.txt 
./out.sh: line 5: 1.5*1.6: command not found
# cat stdout.txt 
result=2.4 result1= result2=2.4

0 0