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
。