将输出重定向到变量?

Jus*_*tin 9 command-line bash redirect

我对将两个命令的输出定向到一个变量很感兴趣。我不希望输出显示在屏幕上,而是分配给脚本中的一个变量,以便我可以再次使用它。

我正在做的是使用下面看到的命令从目录中获取文件大小:

ls -l /var/spool | wc -c
Run Code Online (Sandbox Code Playgroud)

此命令以字节为单位获取文件大小并将输出显示为整数。我有兴趣将此整数分配给我喜欢的变量,以便稍后将其与另一个变量进行比较

这似乎不起作用:

size = ls -l /var/spool | wc -c
Run Code Online (Sandbox Code Playgroud)

重定向会起作用吗?

像这样....

ls -l /var/spool | wc -c > size
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,我都希望将此数字输出分配给变量而不是显示在屏幕上。

任何建议都非常受欢迎!

Rma*_*ano 12

这似乎很简单。

romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476
Run Code Online (Sandbox Code Playgroud)

shell 语法$(command)执行command,并返回标准输出:只需将其保存在一个变量中。

你的命令:

ls -l /var/spool | wc -c > size 
Run Code Online (Sandbox Code Playgroud)

将创建一个size在当前目录中命名的文件 (包含数字和换行符)。


Rad*_*anu 6

我更喜欢Rmano's answer提供的解决方案,但如果您只想使用重定向:

read size < <(ls -l /var/spool | wc -c)
Run Code Online (Sandbox Code Playgroud)