Linux 在变量中存储文本输出(bash)

Linux 在变量中存储文本输出(bash),linux,bash,shell,unix,Linux,Bash,Shell,Unix,至于bash,将文本输出存储在变量中是一种不好的做法吗?我不是说几行,而是几MB的数据。脚本完成后是否应该清空变量 编辑:我没有充分说明第二部分,我想问一下,如果我在当前shell中运行脚本,而不是在子shell中运行脚本,是否应该清空变量,这样它就不会消耗内存。或者,我不应该在当前脚本中运行脚本吗 脚本完成后是否应清空变量 您需要了解脚本是在一个子shell(当前shell的子shell)中执行的,该子shell拥有自己的环境和变量空间。当脚本结束时,该子shell存在,并且该子shell持有

至于bash,将文本输出存储在变量中是一种不好的做法吗?我不是说几行,而是几MB的数据。脚本完成后是否应该清空变量

编辑:我没有充分说明第二部分,我想问一下,如果我在当前shell中运行脚本,而不是在子shell中运行脚本,是否应该清空变量,这样它就不会消耗内存。或者,我不应该在当前脚本中运行脚本吗

脚本完成后是否应清空变量

您需要了解脚本是在一个子shell(当前shell的子shell)中执行的,该子shell拥有自己的环境和变量空间。当脚本结束时,该子shell存在,并且该子shell持有的所有变量都会被销毁/释放,因此无需以编程方式清空变量

至于bash,将文本输出存储在变量中是一种不好的做法吗

这是伟大的实践!继续使用bash编程,不要关心这种内存问题(除非您想将debian DVD映像存储在单个
$debian_iso
变量中,否则您可能会遇到问题)

我不是说几行,而是几MB的数据。应该 脚本完成后是否清空变量


当您完成脚本的执行时,中的所有变量都将消失。它将为您管理内存。也就是说,如果分配
foo=“bar”
,您可以在同一个脚本中访问
$foo
,但显然,您不会在另一个脚本中看到
$foo

,只要它是文本,就没有问题。一旦您需要存储二进制内容,这就是一个问题——NUL字节不能用C字符串表示,而C字符串就是bash标量的存储方式。谢谢,我修改了我的问题。您实际上是如何在当前shell中运行脚本的?为什么?使用源代码(内置命令)。现在我明白了,变量是我应该执行它们而不是在当前shell中运行的原因之一,对吗?只有在当前shell中需要变量时才使用source命令。如果您正在谈论清除它们,那么您不需要源代码命令。