为什么我看到的每个例子都有 while IFS= read line
而不是 while IFS=; read line
?
我认为 name=value command
可能设置了一个局部变量,但 sentence="hello" echo $sentence
不起作用,而 sentence="hello"; echo $sentence
起作用。
最佳答案
这:
name=value command
语法将
name
的value
设置为command
。在你的例子中:$ sentence="hello" echo $sentence
$sentence 由调用 shell 扩展,它看不到设置。如果你这样做
$ sentence="hello" sh -c 'echo $sentence'
(注意单引号使
$
被调用的 shell 扩展)它会回显 hello
。如果你尝试$ sentence="hello"; sh -c 'echo $sentence'
它不会回显任何内容,因为
sentence
是在当前 shell 中设置的,而不是在被调用的 shell 中设置,因为它没有被导出。所以IFS=; read line
不会工作,因为
read
不会看到 IFS
设置。关于bash - `while IFS= read line` 的语法记录在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6830735/