Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Bash while IFS=read line`的语法记录在哪里?_Bash_Shell - Fatal编程技术网

Bash while IFS=read line`的语法记录在哪里?

Bash while IFS=read line`的语法记录在哪里?,bash,shell,Bash,Shell,为什么我看到的每个例子都有而IFS=read line而不是而IFS=;读取行 我原以为name=value命令可能会设置一个局部变量,但sential=“hello”echo$sential不起作用,而sential=“hello”;echo$语句不起作用。在命令前面加上参数赋值会影响正在执行的命令的环境 在man bash的中: 任何简单命令或函数的环境可能是 增强 暂时用参数赋值作为前缀,如 描述 以上是参数。这些赋值语句只影响 该命令所看到的环境 在您的示例中:sential=“hell

为什么我看到的每个例子都有
而IFS=read line
而不是
而IFS=;读取行


我原以为
name=value命令
可能会设置一个局部变量,但
sential=“hello”echo$sential
不起作用,而
sential=“hello”;echo$语句不起作用。

在命令前面加上参数赋值会影响正在执行的命令的环境

在man bash的

任何简单命令或函数的环境可能是 增强 暂时用参数赋值作为前缀,如 描述 以上是参数。这些赋值语句只影响 该命令所看到的环境

在您的示例中:
sential=“hello”echo$sential
sential
将位于
echo
命令的环境中(请尝试显示自己:
sential=HI env | fgrep-sential
),但不在调用它的shell中,当您尝试时,需要将其作为参数传递给echo。

name=value command
语法将
命令的
名称
设置为
。在您的示例中:

$ sentence="hello" echo $sentence
$语句由调用shell展开,它没有看到设置。如果你这样做

$ sentence="hello" sh -c 'echo $sentence'
(注意单引号使被调用的shell扩展了
$
)它将回显
hello
。如果你尝试

$ sentence="hello"; sh -c 'echo $sentence'
它不会回显任何内容,因为
语句
是在当前shell中设置的,而不是在被调用的shell中设置的,因为它没有导出。所以

IFS=; read line

将不起作用,因为
read
将看不到
IFS
设置。

此答案没有回答真正的问题。即有关文档的问题。有关
read
的文档,请在您的终端中,在
bash
中假定,运行
help read