您的位置:首页 > 运维架构 > Shell

shell基础知识02

2014-05-04 16:44 246 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: