
No.4ベストアンサー
- 回答日時:
bashをご使用と判断して
res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。
> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。
#!/bin/bash
str=1
i=0
echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'
while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done
date '+%H:%M:%S.%N'
exit
$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000
exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。
No.2
- 回答日時:
> exprもやってみたのですが、処理が遅くなるので使いません。
> 他の方法ないですか?
expr では処理が遅くなるとのことですが、いったいどのような重い処理をされているのでしょう?
シェルに算術演算の機能はありませんので、シェルスクリプトで算術演算を行う場合はどうしても外部コマンドを呼び出すしか方法がありません。
また、処理速度が問題になるのでしたら、より高速な処理が可能な言語(例えば Perlなど)で書き換えた方が簡単に実現可能かもしれません。
あるいは、処理方法(アルゴリズム)自体を見直すとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
シグナル 6(SIGABRT)とは?
-
エクセル VBAで複数セル選択時...
-
Excel VBA セルの名前があるか...
-
順番に処理させたい
-
Form オブジェクトの戻り値の設定
-
シェルスクリプトでファイル内...
-
VBA 複数の行を高速で削除する...
-
【VBA】エラー処理で別プロシー...
-
エクセル画面のちらつきなくす...
-
どう増強すべきか
-
どうやってもFor文を抜けてしま...
-
StatusStripの表示が更新されな...
-
RaiseEventのメリット
-
ExcelのVBAで、選択したファイ...
-
LoadPicture のオートメーショ...
-
private subモジュールを他のモ...
-
ExcelVBAのコントロールの種類...
-
eclipseのデバッグ中に変数の値...
-
VBA シートのボタン名を変更し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
どう増強すべきか
-
Excel VBA セルの名前があるか...
-
vbaのエラー対応(実行時エラー...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
マクロで、次のコードへ行く前...
-
どうやってもFor文を抜けてしま...
-
【Vb.net】プリンタジョブの取得
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
シェルスクリプトでファイル内...
-
【VBA】エラー処理で別プロシー...
-
cobolのコントロールブレイク
-
Functionで戻り値を複数返す方法
-
エクセル VBAで複数セル選択時...
-
【C#】Page_Loadさせない方法に...
-
ExcelのVBAで、選択したファイ...
おすすめ情報