如何将命令结果存储在Shell变量中?

88

我想查找主目录中目录和文件的数量,并将其存储在一个shell变量中。我正在使用以下一组命令。

command="ls -l | grep -c \"rahul.*patle\""
eval $command

我想把结果存储在一个变量中,我该如何做到这一点?


你可能最好使用 ls -1(数字一)而不是 ls -lgrep -cE,具体取决于你的系统? - beroe
1个回答

130

将命令输出存储到变量的语法为var=$(command)

因此,您可以直接执行:

result=$(ls -l | grep -c "rahul.*patle")

变量 $result 将包含匹配的数量。


2
能否在保留终端输出的同时保存变量? - Leo
@Leo 我认为这是不可能的。你可以使用一个中间文件进行操作:command | tee tmp_file,然后使用 var=$(< tmp_file)。这将执行命令;通过 tee,你可以在终端输出中看到它,并且它也存储在 tmp_file 文件中;接着,你将文件读入到 $var 中。 - fedorqui
1
我刚刚使用了一个额外的管道“tee”。 result = $(ls -l | tee / dev / tty | grep -c“ rahul。* patle”) - Leo
@Leo 哦,这个不错!我刚刚问了一个关于它的问题:如何在打印输出的同时将命令的输出存储到变量中?。请随意在那里加入你的评论,使其成为一个通用参考。 - fedorqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接