Unixコマンド/bc
bc †
機能 †
exprでは,整数の四則演算や数値判別といった簡単な処理しか行えない。
小数点を利用するなどより複雑な処理を行いたい場合は,bcを利用する。
bcはexprとは違い,ファイルやパイプなどで引き渡された値を処理する。
構文 †
bc [オプション] [コマンド]
式 †
| 式 | 意味 |
| scale=桁 | 小数点以下の桁を指定する。初期値は0 |
| length=桁 | 有効桁数を指定する |
| length ( 数値 ) | 指定した数値の有効桁数を返す |
| scale ( 数値 ) | 指定した数値の小数点以下の桁数を返す |
| ibase=基数 | 入力の基数を指定する。初期値は10 |
| obase=基数 | 出力の基数を指定する。初期値は10 |
| last | 最後にbcが出力した値 |
| ( 式 ) | 括弧内の式を先に計算する |
| 変数 ++ | 指定した変数に1を足す |
| 変数 -- | 指定した変数から1を引く |
| 数値1 + 数値2 | 数値1と数値2を足し合わせる |
| 数値1 - 数値2 | 数値1から数値2を引く |
| 数値1 * 数値2 | 数値1と数値2を掛け合わせる |
| 数値1 / 数値2 | 数値1から数値2を割る |
| 数値1 % 数値2 | 数値1から数値2を割った余り |
| 数値1 ^ 数値2 | 数値1の数値2乗 |
| s ( 数値 ) | sin (数値はラジアン) |
| c ( 数値 ) | cos (数値はラジアン) |
| a ( 数値 ) | atan (結果の単位はラジアン) |
| l ( 数値 ) | log |
| e ( 数値 ) | exp |
| sqrt ( 数値 ) | 指定した数値の平方根を返す |
| 数値1 == 数値2 | 数値1と数値2が等しいなら「1」を返す |
| 数値1 != 数値2 | 数値1と数値2が等しくないなら「1」を返す |
| 数値1 < 数値2 | 数値1が数値2より小さいなら「1」を返す |
| 数値1 <= 数値2 | 数値1が数値2より小さいまたは等しいなら「1」を返す |
| 数値1 > 数値2 | 数値1が数値2より大きいなら「1」を返す |
| 数値1 >= 数値2 | 数値1が数値2より大きいまたは等しいなら「1」を返す |
| !式 | 式の論理的に反対を返す |
| 式1 && 式2 | 式1と式2が共に真ならば「1」を返す |
| 式1 || 式2 | 式1と式2のいずれかが真ならば「1」を返す |
| return ( 戻り値 ) | 関数から戻る |
| quit | bcを終了する |
| if (条件式) | 分岐を行う |
| while (条件式) | 繰り返しを行う |
| for (初期処理;条件;繰り返しごとの処理) | 指定した回数繰り返す |
コマンド例 †
$ echo "1+1" | bc 2 $ echo "scale=5; 1/3" | bc .33333
- クウォータのパーセントを出す例
NOW=`quota -v | grep home | awk '{print $2}'` QUOTA=`quota -v | grep home | awk '{print $3}'` PAR=`echo "scale=3; $NOW / $QUOTA * 100"|bc`

