0

这是我的第一个 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完全符合我的预期,只需返回文件数。为什么在我的脚本中输入它时不起作用?在将选项传递给实用程序时,我是否遗漏了一些特殊符号?

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

4

3 回答 3

5

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

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

这方面的术语是命令替换

于 2010-04-04T14:45:15.373 回答
4

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

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

我发现这比反引号更具可读性,并且能够将多个命令相互嵌套。

于 2010-04-04T14:58:37.423 回答
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"
于 2010-04-04T15:08:18.773 回答