[bash] read 명령

2291 단어 shell명령 읽 기
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	#是一行一行读取的,包括空行也会读取(空行就是只有字符
的一行),会自动去掉
do echo Line $cnt: $line cnt=$[ $cnt + 1 ] done

좋은 웹페이지 즐겨찾기