ファイル内で文字列が繰り返される回数を見つけようとしていますが、同時にそれを変数に格納する必要があります。
コマンド ( cat filename | grep -c '123456789'
) を使用すると、カウントが正しく表示されますが、以下のコマンドを使用すると、コマンドが見つからないと表示されます。
var =$(cat filename | grep -c '123456789')
echo $var
どこが間違っているか教えてもらえますか?
ファイル内で文字列が繰り返される回数を見つけようとしていますが、同時にそれを変数に格納する必要があります。
コマンド ( cat filename | grep -c '123456789'
) を使用すると、カウントが正しく表示されますが、以下のコマンドを使用すると、コマンドが見つからないと表示されます。
var =$(cat filename | grep -c '123456789')
echo $var
どこが間違っているか教えてもらえますか?
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)
grep はファイルを直接読み取ることができることに注意してください。cat の無駄な使用を避けることができます。
あなたの質問の例では、等号の前のスペースが原因でコマンドが見つからないというエラーが発生します。代わりにこれを試してください:
var=$(grep -c '123456789' filename)
または bash を使用している場合:
read var < <(grep -c '123456789' filename)
または(完全を期すために)csh/tcshで:
setenv var `grep -c '123456789' filename`
逆引用符の使用も機能します。
varx=`( cat filename| grep -c '123456789' )`
つまり、$
必須ではありません。逆引用符を使用して、さまざまなコマンドの出力を変数に割り当てることができます。
例えば:
$ pwd
/home/user99
$ cur_dir=`pwd`
$ echo $cur_dir
/home/user99