shell编程快速入门三:输入/输出重定向

linux 的标准输入与输出

设备设备名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出

输入重定向

是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(重定向简单理解就是使用 “<”符来修改标准输入设备)

类型符号(语法)功能
标准输入命令<文件1命令把文件1的内容作为标准输入设备
标识符限定输入命令<<标识符命令把标准输入中读入内容,直到遇到“标识符”分解符为止
输入输出重定向(同时使用)命令< 文件1 >文件2命令把文件1的内容作为标准输入,把文件2作为标准输出。

示例:1.文件作为标准输入

#!/bin/bash
# cat /etc/passwd |cut -f 1 -d :

#遍历/etc/passwd文件,获取用户数组
index=0
while read LINE
do
	PASSWD[$index]=`echo $LINE|awk -F ":" '{print $1}' `
	let index++
done</etc/passwd    # 把/etc/passwd作为标准输入

示例:2.输入分隔符终止

3行指定分隔符为:EOF,4-7行指定输入内容,因为EOF终止了输入,第7行不是命令所以报错

输出重定向

(通俗的讲,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏),在linux中,默认的标准输出设备是控制台(或称为显示器),用户输出的信息默认情况下都会显示到控制台

&表示全部文件,文件不管对错,1表示标准输出文件,2表示标准错误输出。

示例:1.错误命令 2>文件

/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null

[root@localhost ~]$ command > dev/null

多命令顺序执行

接受键盘输入

[root@localhost sh]$ vi read.sh
#!/bin/bash

read -t 30 -p "Please input your name: " name
#提示“请输入姓名”并等待30 秒,把用户的输入保存入变量name 中
echo "Name is $name"
#看看变量“$name”中是否保存了你的输入

read -s -t 30 -p "Please enter your age: " age
#提示“请输入年龄”并等待30秒,把用户的输入保存入变量age中
#年龄是隐私,所以我们用“-s”选项隐藏输入
echo -e "\n"
#调整输出格式,如果不输出换行,一会的年龄输出不会换行
echo "Age is $age"

read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#提示“请选择性别”并等待30秒,把用户的输入保存入变量gender
#使用“-n1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender"


© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享