![将输出重定向到变量?](https://linux22.com/image/976807/%E5%B0%86%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我对将两个命令的输出定向到一个变量很感兴趣。我不希望输出显示在屏幕上,而是将其分配给脚本中的变量,以便我可以再次使用它。
我正在做的是使用下面的命令从目录中获取文件大小:
ls -l /var/spool | wc -c
此命令获取文件大小(以字节为单位),并将输出显示为整数。我希望将此整数分配给我喜欢的变量,以便稍后将其与另一个变量进行比较
这似乎不起作用:
size = ls -l /var/spool | wc -c
重定向能起作用吗?
像这样....
ls -l /var/spool | wc -c > size
无论哪种方式,我都希望将此数字输出分配给一个变量而不是显示在屏幕上。
欢迎任何建议!
答案1
这看起来很简单。
romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476
shell 语法$(command)
执行command
,并返回标准输出:只需将其保存在变量中。
您的命令:
ls -l /var/spool | wc -c > size
将在当前目录中创建一个名为的文件 size
(包含数字和换行符)。
答案2
我更喜欢提供的解决方案Rmano 的回答,但如果您只想使用重定向:
read size < <(ls -l /var/spool | wc -c)