[bash]read命令

1. 基本的read和带提示的read命令:

#!/bin/bash

echo -n "Enter you name: "
read name
echo Hello $name!

#和上例的效果一样
#-p命令使得read具有提示信息的能力
#注意,为了给提示信息最后留一个空格的空间,提示信息要用""括起来
#否则会作为命令参数的分隔符看待
#如果不加空格后面的每个单词会被当做echo的参数看待,当然这些都是要打印的参数
read -p "Please enter your name: " name
echo Hello $name!

#read对""包含空格的参数不敏感,暴力地以空格作为参数的分隔符
#从头开始将输入按照空格隔开的原则一个一个分给变量
#当倒数第二个变量分配完毕之后,剩余的输入将作为一个参数统统分给最后一个变量
#包括字符串中的空格
read -p "Please enter your name: " first last
echo Your first name is $first and your last name is $last
#output test 3:
Please enter your name: "sdfx xx" kkk
Your first name is "sdfx and your last name is xx" kkk

一个简单的应用:

#!/bin/bash

read -p "Please enter your age: " age
days=$[ $age * 365 ]
echo That makes you over $days days old!

2. 如果输入时不指定接受输入数据的变量则数据会自动保存在环境变量$REPLY中:

#!/bin/bash

#一个简单的求阶乘的例子

read -p "Please enter a number: "
fac=1
for (( i = 2; i <= $REPLY; i++ ))
do
	fac=$[ $i * fac ]
done
echo The factorial of $REPLY is $fac

3. 超时处理:

#!/bin/bash

#-t后面的选项参数表示输入等待的秒数
#如果超时则命令返回非0码
#因此经常和if或while等配合使用

if read -t 3 -p "Please enter you name: " name
then
	echo Hello $name!
else
	echo	#加一个换行,否则仍然会停留在输入的那一行上
	echo Sorry, you are too slow!
fi

4. 对输入进行计数:

#!/bin/bash

#选项n表示对输入的字符个数计数,一旦到达指定选项参数的个数时不用回车立即就读入并处理输入的数据
read -n1 -p "Do you want to continue [Y/N]? " ans
echo	#由于不用回车所以这里需要换行一下
case $ans in
	Y | y) echo "Fine, continue on...";;	#多种选项的合并用|运算符即可
	N | n) echo "Good bye!"
		   exit 5;;	#直接退出脚本并返回一个推出状态码5
esac
echo This is the end of the script

5. -s选项用来隐藏输入信息:

#!/bin/bash

#-s选项用于隐藏输入,实际上是将输入信息的颜色设置成和底色一样
read -sp "Please enter you password: " pswd
echo
echo Is your password really $pswd?

6. 从文件中管接信息:

#!/bin/bash

cnt=1
cat test.txt | while read line	#是一行一行读取的,包括空行也会读取(空行就是只有字符\n的一行),会自动去掉\n
do
	echo Line $cnt: $line
	cnt=$[ $cnt + 1 ]
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值