read 从标准输入赋值给变量。
read [-options] [variable...]
如果read接收到的值比预期的少,那么后面的变量会是空,如果过多,最后一个变量会接收所有的值。
如果没有变量提供,默认采用 REPLY 作为变量名。
一些选项:
IFS
输入分隔符是由shell变量IFS(Internal Field Separator)控制的,默认的IFS包含空格、tab、换行符。可以通过赋值的方式修改IFS,例如:
IFS=":"
shell允许在同一行,命令前面给一个变量赋值,赋值的变量仅仅临时改变该命令的环境。例如:
IFS=":" read user pw uid gid name home shell <<< "$file_info"
相当于:
OLD_IFS="$IFS" IFS=":" read user pw uid gid name home shell <<< "$file_info" IFS="$OLD_IFS"
只是改变read命令的IFS分隔符。
<<< 是一个here string,here string类似于here doc,只不过是包含一个字符串的更短版。
read不能使用管道:
echo "foo" | read
这样是不行的。
管道会开启一个子shell。