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


10

私が知っている唯一の計算機は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

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


回答:


21

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

rownum=`echo $nextnum+1 | bc`

ただし$( )` `次の代わりに使用することをお勧めします。

rownum=$(echo $nextnum+1 | bc)

しかし、は必要ありません。bcシェルは整数演算を行うことができます:

rownum=$((nextnum+1))

またはでさらに簡単bashksh

((rownum=nextnum+1))

8

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

rownum=$((nextnum+1))

少し速くなります。


2

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

rownum=`expr $nextnum + 1` 

1

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


1
let「標準コマンド」の呼び出しは非常に誤解を招きます。$((…))は標準(POSIX)構文letですが、ksh(およびbash、zsh)拡張です。
Gilles 'SO-悪をやめなさい'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.