bash - 语法 `while IFS= read line` 记录在哪里?

标签 bash shell

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

我认为 name=value command 可能会设置一个局部变量,但是 sentence="hello"echo $sentence 不起作用,而 sentence="你好”; echo $sentence 确实如此。

最佳答案

:

name=value command

语法将 commandname 设置为 value。在你的例子中:

$ 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/

相关文章:

bash - shell脚本中的性能问题

linux - 无法加载 inputrc 文件

bash - 如何在 bash 中的 grep 中指定命令行参数?

linux - 用于检查文件在 x 分钟内创建的 Nagios 插件

php - 从 php 执行 bash 脚本来执行 jar

bash - 在 bash 中列出文件中的所有变量

macos - zsh - 使用默认值读取用户输入 - 空输入不为空?

bash - 为每次运行的 bash 脚本维护日志

linux - 查看同一用户在其他终端输入命令的历史记录

linux - Apache-CGI-Bash 应用程序中的安全性或其他陷阱?