刚刚开始第一次使用bash(如果这是一个愚蠢的问题,请道歉(。
据我所知,read
用于接收用户输入。然而,在下面的例子中,它似乎也被用来分配函数参数。
我是不是遗漏了什么?还有别的事吗?我发现很难找到关于它如何工作的文档。
如有任何帮助,将不胜感激
function server () {
while true
do
read method path version
if $method = 'GET'
then
echo 'HTTP/1.1 200 OK'
else
echo 'HTTP/1.1 400 Bad Request'
fi
done
}
在您的示例中,read
命令用于将输入读取到3个不同的变量method
、path
和version
中。
如果用户输入行"my name is joe"
作为输入,则method
、path
和version
的值为:
method -> "my"
path -> "name"
version -> "is joe"
但是,如果用户输入"hello world"
,则只有method
和path
将包含字符串。具体而言:
method -> "hello"
path -> "world"
version ->
如果要使用read
命令将输入读取到N
变量(即read var1 var2 ... varN
(中,则用户在命令行上的输入将由IFS
变量中的字符分隔。事实上,IFS
代表";输入字段分隔符";。
默认情况下,IFS
变量等效于$' tn'
。这意味着,除非另有规定,否则用户输入由空格、制表符或换行符分隔。
EDIT:IFS
也通常被称为";内部字段分离器";正如David在评论中指出的那样(如果你从其他开发人员那里看到的话(。