【问题标题】:How to store command results in a shell variable? [duplicate]如何将命令结果存储在 shell 变量中? [复制]
【发布时间】:2013-11-25 21:53:10
【问题描述】:

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

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

我想将结果存储在一个变量中。我该怎么做?

【问题讨论】:

  • 根据您的系统,您最好使用ls -1(第一)而不是ls -lgrep -cE

标签: bash shell


【解决方案1】:

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

所以你可以直接这样做:

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

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

【讨论】:

  • 是否可以保存变量,但同时保持终端输出?
  • @Leo 我认为这是不可能的。您可能可以为此使用中间文件:command | tee tmp_file,然后是var=$(< tmp_file)。这将执行命令;使用tee,您可以在终端输出中看到它,它也存储在文件tmp_file 中;然后,您将文件读入$var
  • 我刚刚用一个额外的管道tee 做到了。 result=$(ls -l | tee /dev/tty | grep -c "rahul.*patle")
  • @Leo 哦,这很好!我刚刚问了一个问题:How to store the output of a command in a variable at the same time as printing the output?。随意在此处合并您的评论,使其成为一般参考。
猜你喜欢
  • 2022-10-19
  • 2012-01-29
  • 2018-05-11
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2011-08-02
相关资源
最近更新 更多