使用Bash脚本中的选项调用linux实用程序

时间:2010-04-04 14:43:15

标签: bash scripting find utilities wc

这是我的第一个Bash脚本,如果这个问题很简单,请原谅我。我需要计算指定目录$ HOME / .junk中的文件数。我认为这很简单,并假设以下内容可行:

numfiles= find $HOME/.junk -type f | wc -l
echo "There are $numfiles files in the .junk directory."

在命令行输入find $HOME/.junk -type f | wc -l完全符合我的预期,只返回文件数。在我的脚本中输入时,为什么这不起作用?在将选项传递给实用程序时,我是否遗漏了一些特殊符号?

非常感谢你的时间和帮助。

3 个答案:

答案 0 :(得分:5)

你只需要用反引号包围它:

numfiles=`find $HOME/.junk -type f | wc -l`

这个术语是command substitution

答案 1 :(得分:4)

如果你使用bash,你也可以使用$()进行命令替换,如下所示:

numfiles=$(find $HOME/.junk -type f | wc -l)

我发现它比反引号稍微更具可读性,并且能够将多个命令嵌套在另一个中。

答案 2 :(得分:1)

使用bash 4(如果你想要递归)

#!/bin/bash
shopt -s globstar
for file in **
do
 ((i++))
done
echo "total files: $i"

如果不是

#!/bin/bash
shopt -s dotglob
shopt -s nullglob
for file in *
do 
  ((i++))
done 
echo "total files: $i"