Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 在UNIX中重定向read命令的输入_Shell - Fatal编程技术网

Shell 在UNIX中重定向read命令的输入

Shell 在UNIX中重定向read命令的输入,shell,Shell,我想使用read命令初始化一个变量,该变量的值来自上一个命令的输出。我认为这是可行的: echo some_text | read VAR 但是$VAR是空的。“读取从标准输入中读取一行。”手册页上说。管道将echo的输出发送到read的输入。我错在哪里 我的工作解决方案是 echo text > file ; read VAR < file echo text>文件;读取VAR

我想使用read命令初始化一个变量,该变量的值来自上一个命令的输出。我认为这是可行的:

echo some_text | read VAR
但是$VAR是空的。“读取从标准输入中读取一行。”手册页上说。管道将echo的输出发送到read的输入。我错在哪里

我的工作解决方案是

echo text > file ; read VAR < file
echo text>文件;读取VAR<文件

但是它使用了一个文件…

如何
VAR=$(命令)

我假设您的shell是bash。当存在管道时,管道中的每个命令都在子shell中执行,父shell连接所有适当的文件描述符。因此,read命令获取它的stdin并设置VAR变量,然后它的子shell带着变量退出

你可以用这里的文件

read VAR << END
text
END
读取变量可能重复的
read VAR <<< "text"
read VAR < <(echo text)