有没有一种优雅的方法可以将 shell 变量设置为文件的内容?

str*_*gee 11 shell io-redirection shell-script

假设我在文件中有一些配置数据config。为方便起见,我想将此数据加载到 shell 变量CONFIG_DATA.

显然我可以这样做:

CONFIG_DATA="$(cat config)"
Run Code Online (Sandbox Code Playgroud)

但这对我来说有点无用cat。这是唯一的方法吗?或者有没有更优雅的方法来做到这一点?

答案应该更喜欢 POSIX,但可以使用任何 shell。

小智 23

至少在 Bash 和 Z shell 中,有一种更快的方法:

CONFIG_DATA=$(<config)
Run Code Online (Sandbox Code Playgroud)

引用 Bourne Again shell 的手册页:

命令替换 $(cat file) 可以替换为等效但速度更快的 $(< file)。

  • @MatthewRock 请注意,许多非常糟糕的做法是常见且熟悉的。cat 的无用用途就是一个例子,`for i in $(cat file); 做...`是另一个。它们很常见并不是继续使用糟糕工具的理由。这并不是说 cat 的这种特殊用途也不好,我不确定是否有更便携的方式。只是说普通的和熟悉的!= 好。 (6认同)