English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linux read 명령어는 표준 입력에서 숫자를 읽습니다.
read 내부 명령어는 표준 입력에서 단一行 데이터를 읽는 데 사용됩니다. 이 명령어는 키보드 입력을 읽거나, 리디렉션을 사용할 때 파일의 한 행을 읽을 수 있습니다.
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [이름 ...]
파라미터 설명:
1、简单读取
#!/bin/bash #这里默认会换行 echo "输入网站名: " #读取从键盘的输入 read website echo "你输入的网站名是 $website" exit 0 #退出
测试结果为:
输入网站名: ko.oldtoolbag.com 你输入的网站名是 ko.oldtoolbag.com
2,-p 参数,允许在 read 命令行中直接指定一个提示。
#!/bin/bash read -p "输入网站名:" website echo "你输入的网站名是 $website" exit 0
测试结果为:
输入网站名:ko.oldtoolbag.com 你输入的网站名是 ko.oldtoolbag.com
3,-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。
#!/bin/bash if read -t 5 -p "输入网站名:" website then echo "你输入的网站名是 $website" else echo "\n抱歉,你输入超时了。" fi exit 0
执行程序不输入,等待 5 秒后:
输入网站名: 抱歉,你输入超时了
4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
#!/bin/bash read -n1 -p "Do you want to continue [Y/N]?" answer case $answer in Y | y) echo "fine ,continue";; N | n) echo "ok,good bye";; *) echo "error choice";; esac exit 0
该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。
只接收 2 个输入就退出:
#!/bin/bash read -n2 -p "请随便输入两个字符: " any echo "\n您输入的两个字符是:$any" exit 0
执行程序输入两个字符:
请随便输入两个字符: 12 您输入的两个字符是:12
5,-s 옵션은 read 명령어에 입력된 데이터는 명령终端에 표시되지 않습니다.(실제로는 표시되지만, read 명령어는 텍스트의 색상을 배경과 동일한 색상으로 설정합니다). 비밀번호 입력 시 일반적으로 이 옵션을 사용합니다.
#!/bin/bash read -s -p "\u00ec\u00b2\u00b4\u00b9\u00ec\u00b9\u00b4\u00b1\u00b9\u00ec\u00b8\u00b9\u00b4\u00b1\u00ec\u00b9\u00b4\u00b1\u00b9\u00ec\u00b8\u00b9\u00b4\u00b1:\" pass echo "\n\u00ec\u00b2\u00b4\u00b9\u00ec\u00b9\u00b4\u00b1\u00b9\u00ec\u00b8\u00b9\u00b4\u00b1 $pass" exit 0
프로그램을 실행하고 비밀번호를 입력하면 표시되지 않습니다:
당신의 비밀번호를 입력하세요: 입력하신 비밀번호는 w입니다3codebox
6. 파일 읽기
read 명령어가 호출될 때마다 파일의 "한 행" 텍스트를 읽습니다. 파일에 더 이상 읽을 수 있는 행이 없을 때, read 명령어는 μη zero 상태로 종료됩니다.
파일 내의 데이터를 read 명령어에 어떻게 전달할 수 있습니까? cat 명령어를 사용하여 파이프를 통해 결과를 read 명령어가 포함된 while 명령어에 직접 전달합니다.
테스트 파일 test.txt 내용은 다음과 같습니다:
123 456 w3codebox
테스트 코드:
#!/bin/bash count=1 # 할당 문장, 공백 없이 cat test.txt | while read line # cat 명령어의 출력을 read 명령어의 입력으로 사용, read는 '>'의 값을 line에 넣습니다 do echo "라인 $count:$line" count=$[ $count + 1 ] # 중괄호 내의 공백을 주의하세요。 done echo "finish" exit 0
실행 결과는 다음과 같습니다:
라인 1:123 라인 2:456 라인 3:w3codebox finish
사용 -e 파라미터를 사용하여 다음 예제 입력 문자 a 다음에 누르세요 Tab 키가 입력되면 관련 파일 이름이 출력됩니다(이 디렉토리에 존재하는 경우):
$ read -e -p "파일 이름 입력:" str 파일 이름 입력: a a.out a.py a.pyc abc.txt 파일 이름 입력: a