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


74

我想找出主目录中的目录和文件数量,并想在shell脚本中存储一些变量。我正在使用以下命令集。

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

我想将此计数存储为一些变量计数。我怎样才能做到这一点。


您可能最好使用ls -1(第一)而不是ls -l并且grep -cE取决于您的系统?
beroe

Answers:


110

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

因此,您可以直接执行以下操作:

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

并且变量$result将包含匹配数。


是否可以保存变量,但仍同时保留终端输出?
狮子座

@Leo我认为不可能。您可能为此使用一个中间文件:command | tee tmp_file然后var=$(< tmp_file)。这执行命令;与tee你看到它在终端输出,并将其存储在文件中tmp_file为好; 然后,您将文件读入$var
fedorqui'SO停止伤害

1
我只是用另外一根管子做成的teeresult=$(ls -l | tee /dev/tty | grep -c "rahul.*patle")
狮子座

@Leo哦,这是一个好人!我刚刚问了一个问题:如何在打印输出的同时将命令的输出存储在变量中?。随时在此处合并您的评论,以使其具有普遍参考意义。
fedorqui'SO停止伤害
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.