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 の無駄な使用を避けることができます。

あなたの質問の例では、等号の前のスペースが原因でコマンドが見つからないというエラーが発生します。代わりにこれを試してください:

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

逆引用符の使用も機能します。

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

つまり、$必須ではありません。逆引用符を使用して、さまざまなコマンドの出力を変数に割り当てることができます。

例えば:

$ pwd
/home/user99

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