[フレーム]
はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできます コメント表示の設定

ブックマークしました

ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

220users がブックマーク コメント 31

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

今どきのシェルスクリプトは数値計算にexprを使わない(POSIX準拠) - Qiita

220 users qiita.com/ko1nksm

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

はてなブックマーク

はてなブックマークで
関心をシェアしよう

みんなの興味と感想が集まることで
新しい発見や、深堀りがもっと楽しく

ユーザー登録

アカウントをお持ちの方はログインページ

記事へのコメント31

  • 注目コメント
  • 新着コメント
a-kuma3
せっかくきちんとした内容なのに「現在のshは」がひっかかる。SolarisやHP-UXは現在でもbashへのハードリンクにはなってないんじゃないかな/計算が必要なスクリプトは全体をawkやperlで書く、がスタンダードだと思ってたが

その他
Windymelt
$(())はPOSIX互換なのか。知らなかった

その他
buhoho
まじか "expr による計算は $(( ... )) よりも約 1000 倍遅い"

その他
xlc
シェルスクリプトを覚えたのが80年代なので、今だに expr を使ってしまう。そんなに古くから標準化されていたとは知らなかったよ。

その他
wasai
Solaris11.4でsh使ってるときはまだ使うけどなあ

その他
terazzo
ちょっと簡単な計算しようと思ってbc -lと打ってcommand not foundになった時のガッカリさよ

その他
tmatsuu
わいわい

その他
HHR
もう本を執筆してくんね?

その他
masa8aurum
"現在の sh は POSIX 準拠のシェルに置き換わっており Bourne シェルはもはや使われていません"

その他
OkadaHiroshi
個人的にはたとえ簡単な四則演算であっても計算をしないといけないとなった時点でスクリプト言語に切り替えるべきだと思う。

その他
yarumato
"$(( ... )) はbashの拡張機能ではなく、全てのPOSIXシェル(DebianのdashもFreeBSDのshも)で使える。整数(小数は無理)計算に $(( ... )) はexprより読みやすく、外部コマンド呼出さないから1000倍早い"

その他
onesplat
この記事が「数値計算」という単語を誤って使っている(というよりアカデミーにおける一般的な使われ方を知らない)から誤解を招いているのでは。そりゃシェルで数値計算はやらんわな。「四則演算」くらいにしとけ。

その他
prozorec
FreeBSDのexprだと第一引数に-1を渡すとオプションだと勘違いし、エラーになって計算できない。その場合はshの機能で計算せざるをえない

その他
zgmf-x20a
とすると、#!/bin/bashにしないとハマるな。

その他
ouest
数値計算に expr を使わない

その他
wasai
wasai Solaris11.4でsh使ってるときはまだ使うけどなあ

2022年10月09日 リンク

その他
advblog
昔のシステムや資料見てるとこういうレガシーがあって面白い

その他
xlc
xlc シェルスクリプトを覚えたのが80年代なので、今だに expr を使ってしまう。そんなに古くから標準化されていたとは知らなかったよ。

2022年10月09日 リンク

その他
delphinus35
CD/CIでスクリプト書くと、Perl/Ruby入れるのはハードル高くて未だにbashが現役。なのでこういう啓蒙は助かる。

その他
enemyoffreedom
まぁガッツリ計算するときはbc使えばいいし

その他
fn7
"「シェルに数式を処理する機能はありません」(P184) " bshを使いましょうという本だったのだから、筋は通ってるところに文句言っても仕方ないよ。bash使える時に使えばいい。8進と10進の解釈揺れがあるのは知らなかった

その他
UME
さすがにむちゃくちゃ計算させるときはbashつかわないしなあ。 小数点考え始めるとzsh使うようになりました。awkでもいいか。。

その他
fa11enprince
やったらわかると思うけど、シェルで数値計算しちゃダメ。 何も考えないと遅くなりがちだし考えたところで普通のプログラミング言語で書いた場合と速度差が出過ぎてろくなことにならない。Python、Ruby、Perlでやれ。

その他
t_motooka
知らなかった。なるほど。

その他
moerrari
ちょうどUbuntuでletで計算ができたりできなかったりしていたので助かった→理由はエントリに記載の通り、シェバング「#!/bin/bash」を「#!/bin/sh」にしていたからだった。

その他
takeshi0206
え!そうなのか。

その他
tkysktmt
"ついでに言いますが、紛らわしいので sh = Bourne シェルとは言わないようにしてください。現在の sh は POSIX 準拠のシェルに置き換わっており Bourne シェルはもはや使われていません"

その他
a-kuma3
a-kuma3 せっかくきちんとした内容なのに「現在のshは」がひっかかる。SolarisやHP-UXは現在でもbashへのハードリンクにはなってないんじゃないかな/計算が必要なスクリプトは全体をawkやperlで書く、がスタンダードだと思ってたが

2022年10月08日 リンク

その他
Shinwiki
え、まじで

その他
koyancya
知らなかった......

その他
tohokuaiki
へー。知らんかった。

その他
buhoho
buhoho まじか "expr による計算は $(( ... )) よりも約 1000 倍遅い"

2022年10月08日 リンク

その他
kuwayoshi
へー。posix準拠とは知らなかった。

その他
yabu_kyu
Solarisは現在ではbshは入ってるけど/bin配下になかったと思う。 https://docs.oracle.com/cd/E26924_01/html/E25934/userenv-1.html

その他
Windymelt
Windymelt $(())はPOSIX互換なのか。知らなかった

2022年10月08日 リンク

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

リンクを埋め込む

以下のコードをコピーしてサイトに埋め込むことができます

プレビュー
アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

usersに達しました!

さんが1番目にブックマークした記事「今どきのシェルス...」が注目されています。

気持ちをシェアしよう

ツイートする

今どきのシェルスクリプトは数値計算にexprを使わない(POSIX準拠) - Qiita

はじめに 1992 年に POSIX でシェルが標準化されて以来、シェルスクリプトの数値計算に expr コマンドは... はじめに 1992 年に POSIX でシェルが標準化されて以来、シェルスクリプトの数値計算に expr コマンドは使いません。expr コマンドを使って計算していたのは Bourne シェル(古い UNIX の sh)時代の話で、現在の POSIX sh (dash、bash、ksh 等)時代では数値計算に expr コマンドは不要です。今どきはシェルの機能だけで整数の計算を行うことができます。「今どき」って一体いつからだって話なわけですが......。 注意 シェルスクリプトでパフォーマンスの話をするとすぐに「他の言語で〜」という方がいますが、私はどんなことにでもシェルスクリプトを使えなんて一言も言っていません。パフォーマンスを気にしている理由は、そこが実際にシェルスクリプトのボトルネックになるポイントだからです。そもそもシェルスクリプトと一般的な言語は言語設計レベルで得意なことが違います。ユ

ブックマークしたユーザー

  • techtech05212024年05月25日 techtech0521
  • manhole2023年04月08日 manhole
  • ieeezooi2022年10月21日 ieeezooi
  • tsukiji32022年10月15日 tsukiji3
  • s10611232022年10月15日 s1061123
  • dann2022年10月11日 dann
  • ikajigoku2022年10月11日 ikajigoku
  • terazzo2022年10月10日 terazzo
  • tmatsuu2022年10月10日 tmatsuu
  • ser1zw2022年10月10日 ser1zw
  • hiiro232022年10月09日 hiiro23
  • kazkun2022年10月09日 kazkun
  • HHR2022年10月09日 HHR
  • masa8aurum2022年10月09日 masa8aurum
  • Phenomenon2022年10月09日 Phenomenon
  • Cetus2022年10月09日 Cetus
  • shortsleep2022年10月09日 shortsleep
  • Tomohiro2022年10月09日 Tomohiro
すべてのユーザーの
詳細を表示します

ブックマークしたすべてのユーザー

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

はてなブックマーク

公式Twitter

はてなのサービス

Copyright © 2005-2025 Hatena. All Rights Reserved.
設定を変更しましたx

AltStyle によって変換されたページ (->オリジナル) /