7

我试图找到一个字符串在文件中重复的次数,同时我必须将它存储在一个变量中。

当我使用命令 ( cat filename | grep -c '123456789') 时,它会正确显示计数,但是当我使用以下命令时,它会显示为未找到命令。

var =$(cat filename | grep -c '123456789')
echo $var

你能让我知道我哪里错了吗?

4

3 回答 3

16

Don't use spaces around the = sign:

var=$(cat filename | grep -c '123456789')

Read at least the Bash Prog Intro Howto

But you've got a useless use of cat so code simply

    var=$(grep -c '123456789' filename)
于 2012-06-05T05:01:31.347 回答
6

请记住,grep 可以直接读取文件。您可以避免无用地使用 cat

在您问题的示例中,由于等号前的空格,导致出现command not found错误。试试这个:

var=$(grep -c '123456789' filename)

或者如果您使用的是 bash:

read var < <(grep -c '123456789' filename)

或(为了完整性)在 csh/tcsh 中:

setenv var `grep -c '123456789' filename`
于 2012-06-05T05:35:59.113 回答
1

Using backquotes will also work:

varx=`( cat filename| grep -c '123456789' )`

I.e., the $ is not required, you can assign the output of various commands to variables through the use of backquotes.

For instance:

$ pwd
/home/user99

$ cur_dir=`pwd`
$ echo $cur_dir
/home/user99
于 2012-06-05T05:03:40.160 回答