博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux while 和 read 的用法
阅读量:5136 次
发布时间:2019-06-13

本文共 2170 字,大约阅读时间需要 7 分钟。

Reference:

read 命令说明

SYNTAX : read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

OPTIONS :

-r : 忽视转义符

-s : 静默模式. 对于 [ 输入密码 ] 的需求.

-a ARRAY_NAME : 将输入的字符存入数组.

-d : 用 -d 参数值的第一个字符定义结束符. 默认为换行符.

-n NUMBER: 输入 -n 参数值定义的字符个数时, 自动结束. 当使用 Enter 时, 结束交互.

-N NUMBER : 输入 -N 指定参数的字符个数时, 自动结束. 当使用 Enter 的时候, 不结束交互.

-p CONTENT : 交互时的提示信息

-t NUMBER: 超时时间, 单位 : 秒 (s)

-u FD: 从文件描述符中获取输入

EXAMPLES

read 如果不指定变量名称, 则输入的值默认赋给: REPLY

$readFirst Line$echo $REPLYFirst Line

-s : 静默模式

$read -s -p "Input Your Password:" PASSWDInput Your Password:$echo $PASSWDtestpass

-a : 读入数据存入数组

$read -a number_array -p "Input number sequence:"Input number sequence:10 20 50 100$$for n in ${number_array[@]}; do echo $n;done102050100

-u : 从文件描述符读入数据

#!/bin/bash# Let us assign the file descriptor to file for input fd # 3 is Input file exec 3< /etc/resolv.conf# Let us assign the file descriptor to file for output fd # 3 is Input file exec 4> /tmp/output.txt # Use read command to read first line of the fileread -u 3 a becho "*** My pid is $$"mypid=$$echo "*** Currently open files by $0 scripts.."ls -l /proc/$mypid/fd# Close fd # 3 and # 4exec 3<&-exec 4>&-

while read 的用法

从标准输入读取

while read linedo     echo $linedone

从管道读取

$cat /etc/resolv.conf | while read line;do echo $line;done# result; generated by /usr/sbin/dhclient-scriptsearch lvrpf0txgxle3htzsh2w1rj15g.hx.internal.cloudapp.netnameserver 168.63.129.16

从文件描述符读取

#!/bin/bash# Shell script utility to read a file line line.FILE="$1"# make sure filename supplied at a shell prompt else die[ $# -eq 0 ] && { echo "Usage: $0 filename"; exit 1; } # make sure file exist else die[ ! -f $FILE ] && { echo "Error - File $FILE does not exists." ; exit 2; }# make sure file readonly else die[ ! -r $FILE ] && { echo "Error - Can not read $FILE file."; exit 3; }IFS=$(echo -en "\n\b")exec 3<$FILEwhile read -u 3 -r linedo    echo $linedone# Close fd # 3exec 3<&-# exit with 0 success status exit 0

定义分隔符

利用环境变量: IFS 可以定义分隔符

while IFS=: read user _ _ _ _ home shelldo    echo "user: $user.   home: $home.    shell: $shell"done

转载于:https://www.cnblogs.com/tiantiandas/p/shell_command_read.html

你可能感兴趣的文章
list control控件的一些操作
查看>>
精读《useEffect 完全指南》
查看>>
SNF快速开发平台MVC-EasyQuery-拖拽生成SQL脚本
查看>>
DrawerLayout实现双向侧滑
查看>>
MySQL入门很简单-触发器
查看>>
LVM快照(snapshot)备份
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
数论四大定理
查看>>
npm 常用指令
查看>>
20几个正则常用正则表达式
查看>>
TextArea中定位光标位置
查看>>
非常棒的Visual Studo调试插件:OzCode 2.0 下载地址
查看>>
判断字符串在字符串中
查看>>
hdu4374One hundred layer (DP+单调队列)
查看>>
类间关系总结
查看>>
properties配置文件读写,追加
查看>>
Linux环境下MySql安装和常见问题的解决
查看>>
lrzsz——一款好用的文件互传工具
查看>>
ZPL语言完成条形码的打印
查看>>