web-dev-qa-db-ja.com

変数を計算し、別の変数に出力します

私が知っている唯一の計算機はbcです。変数に1を追加し、別の変数に出力したい。

ファイル内の文字列をカウントしてnextnum変数を取得しました。

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

nextnum値が1であるとしましょう。 1で追加すると、2になります。計算するには、次を実行します。

rownum=`$nextnum+1 | bc`

エラーが発生しました:

1+1: command not found

計算に失敗しました。バックティックを変更しようとしましたが、まだ機能しません。変数を計算して別の変数に出力する方法がわかりません。

10
apasajja

_` `_内の部分文字列は、それ自体が有効なコマンドである必要があります。

_rownum=`echo $nextnum+1 | bc`
_

ただし、_` `_ではなく$( )を使用することをお勧めします。

_rownum=$(echo $nextnum+1 | bc)
_

ただし、bcは必要ありません。シェルはinteger演算を実行できます。

_rownum=$((nextnum+1))
_

または、bashkshをさらに単純化します。

_((rownum=nextnum+1))
_
21
manatwork

Bashの組み込み算術を使用することもできます。

rownum=$((nextnum+1))

少し速くなります。

8
Julian

Bourne-Shellのみが利用可能であった以前の時代に行わなければならない方法に言及するだけで、提案された解決策を完全に正しく完了します。それが好きな方法です。

rownum=`expr $nextnum + 1` 
2
wolf

私は(前述のように)rownum=$((nextnum+1))または((rownum=nextnum+1))を使用しますが、let rownum=$nextnum+1などの標準コマンドを使用する場合は、letコマンドを使用できます。