コマンドラインで計算
LinuxWorld誌で連載していた「シェルスクリプトトレーニング」をWebで再開しました。第6回目は「コマンドラインで計算するスクリプト」を題材に引数について解説しています。
http://www.techworld.jp/channels/desktop/101735/
(シェルスクリプトトレーニングは同誌で連載していた「シェルの基本テクニック」の続編になります。第1回~第5回は近々?掲載される予定。内容は雑誌と同一です)。
スクリプトの内容は
#!/bin/bash
echo "$*" | bc
プロンプトで「calc 38*75」と入力すると「2850」と表示されます。Googleの検索窓で入れると出てくるアレ。中身はbcコマンドです。
「calc 38*75+50」やら「calc 38*(75+50)」でも可。スペースを入れたい場合は「calc "38 * 75 + 50"」のようにします。
*
XPやVistaのDOS窓ではどうやるか、というと、setコマンドが手っ取り早いです。
set /a 38*75でOK。
とはいえ、「set /a」なんて覚えていられるわけもないので calc.bat を作るとしたらこうなります。
@cmd /c set /a %*
setコマンドだけ書くと、setコマンドがバッチファイル実行環境内(=子プロセス)で実行されることになるので「cmd /c」を付けます(説明はしょってます)。さらに、バッチファイル実行中にコマンド名(cmd /c)が表示されないように、「@」を付けています。
実験:cmd /cなしだとどうなるか、/cなしだとどうなるか、@を付けないとどうなるか(単に表示が変わるだけなので気軽な気持ちで試してOKです)
こんな風に使えます。
*
うちのWindowsにはperl.exeを仕込んでます、という方は、「perl -e "printf('%d',%*);"」で。Perlを使うなら、ついでに16進数と2進数での表示をつけるもまたよし。
@perl -e "printf('%%d (%%X)(%%b)',%*,%*,%*);"バッチファイルでは「%」が特別な意味を持つので「%%」と記述します。
| 固定リンク