1 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 23:17:50.64 ID:L+B8OP2P.net] シェルスクリプトに関する総合スレッドです。 全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 ・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。 シェルスクリプト総合 その30 https://mevius.5ch.net/test/read.cgi/tech/1561989867/
744 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 21:25:17.92 ID:8eIOCDAd.net] 何がお怒りのなのかさっぱりですけどw
745 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 21:31:30.87 ID:8eIOCDAd.net] よくわからないが、他の言語で func() と a = func() で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718 で 関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
746 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 21:52:27.77 ID:fust4gpU.net] すべての言語はそれぞれ違っているんだが、 同じ言語がほしいのか?
747 名前:デフォルトの名無しさん [2019/10/01(火) 21:57:08.01 ID:Ueonb/Q5.net] みんな違って みんないい まつお
748 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 22:01:17.19 ID:8eIOCDAd.net] >>736 相変わらずだね。何を言いたいのかさっぱり 返り値を使う(関数)使わない(サブルーチン)でコストがこんなにあるって話なのに
749 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 22:14:23.82 ID:8eIOCDAd.net] そうだ、ksh(zsh)ならreadでと思ったら、逆に遅くなるのね hoge | read a サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
750 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 22:58:18.96 ID:9HRGRt02.net] for ループは、while よりも遅いだろ。 bash も、dash よりも遅いだろ ループでは、for, bashを使わない方が速い
751 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:34:09.29 ID:DttT1lmW.net] returnが返り値ってw あれはエラー情報だろ 例外と同じ。
752 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:35:42.98 ID:DttT1lmW.net] パイプで処理をつなげていくシェルスクリプトにおいて 返り値=出力なんだよ 出力を読み取って、処理して出力する そういう基本がわかってないだけ
753 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:53:15.78 ID:8eIOCDAd.net] return なんすけど。returnの意味知ってる?とかいう。いや、しつれい エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
754 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:59:02.30 ID:8eIOCDAd.net] function name () { } が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w >>742 そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
755 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:19:13.78 ID:DWeKr+Az.net] >>743 returnの意味は「帰る」 何かを戻すという意味はない
756 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:20:54.57 ID:238K9SSk.net] マジで言ってるの?もっと勉強しよう、他人にアタるならw
757 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:20:59.41 ID:DWeKr+Az.net] アセンブラでもreturn(RET)がある。 これも戻るという意味なだけ 呼び出し元に何かを戻すという意味はない
758 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:23:56.96 ID:238K9SSk.net] アセンブラでもマクロアセンブラはあったりするけどな 戻り値をどういう形態で(どのレジスタにとか)という決まりであれば >呼び出し元に何かを戻すという意味はない マジで言っているの?アホらしい
759 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:25:12.52 ID:DWeKr+Az.net] >>748 「マジでいってんの」しか言ってないよなw returnを翻訳してみろ。戻るという意味しかない
760 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:26:09.34 ID:DWeKr+Az.net] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_24 returnの説明にも、nは終了ステータスと書いてある。 return valueとは書いていない
761 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 00:30:13.30 ID:238K9SSk.net] 言うならアセンブラでなくて機械語だな。ほんとにしょうもない知識自慢 >>749 >returnを翻訳してみろ。戻るという意味しかない マジで言ってるのとしか言えんやん。「return なんとか」とか普通にあるぞ? >>743 にreturnしか書いてないからか?なんかしょうもないなああwなんかしょうもないけど、だったらなんかすまんな >>750 関数として見たらだよ。すでにそういうことは>>743 ,744で言っているんだけど 所詮コマンドだなで終わってるよ
762 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:32:56.67 ID:o4tQ0hze.net] >>735 よく分からないで批判する癖は辞めた方が良い
763 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:35:11.54 ID:o4tQ0hze.net] >>751 機械語にreturnに類する語は出てこないぞ?
764 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:35:40.52 ID:238K9SSk.net] 「よくわからない」が何を指しているのか「よくわからない」だろう? また単なる「語」に食いつくwいつものかとしか思えません
765 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:36:26.76 ID:238K9SSk.net] >>753 イミフ。機械語は01だからな。そんな話はしてない やっぱりいつものかw
766 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:39:39.82 ID:238K9SSk.net] 同一人物かどうか知らんが、>>742 から同じ人物としてしまう、もうw 同じ「レベルw」でしかも同じ姿勢としか思えないので。もう十二分にそのレベルwを自ら率先して晒してしまったので>>744 の後半で正解だったなと あとはもう「教えてww」やんない
767 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:53:53.42 ID:o4tQ0hze.net] いつもの妄言を喚いて自分の敵は一人だと思い込んでる痛い奴だったか
768 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 01:55:39.44 ID:238K9SSk.net] 敵www そういう姿勢だったのね。そうだよね、あなたはw
769 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:46:06.49 ID:JFJLbhDm.net] IDが変わっても判別しやすいのはいいこと ぼんやりしてて助かる
770 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:51:03.64 ID:o4tQ0hze.net] >>758 いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
771 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:58:29.05 ID:238K9SSk.net] >>760 >>756 をよーく読もうな。読めない? >>753 は何を言いたいの? 機械語は01だからreturnに対する語はないと言いたいの?ととって、ああまたかというw>>756 なんだよ(よく読んでねw) >機械語にreturnに類する語は出てこないぞ? って、どういう意味?俺の理解とは別でならすまんかったちょっと続ける?
772 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:24:37.13 ID:DWeKr+Az.net] 知らないなら言わなければいいのにw RET命令(Return from Procedure) softwaretechnique.jp/OS_Development/Tips/IA32_Instructions/RET.html
773 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:28:45.47 ID:238K9SSk.net] >>762 なにを言いたいのかさっぱりなんですが、具体的に自分のお言葉でお願い まさか、RETはあるがReturnは無いではないだろうし、さっぱりわからん (そしてなんで同じやねん、その姿勢w)
774 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:43:25.73 ID:DWeKr+Az.net] 同じだだろ。何いってんの? 略だから違うんだって言いたいの?
775 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:44:26.53 ID:o4tQ0hze.net] >>762 そしてそれはアセンブリ言語という..
776 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:46:58.80 ID:DWeKr+Az.net] シェルスクリプトのreturnは終了ステータスを返すもので これは他の言語の返り値ではないのは一目瞭然なんだがね だからこそ $_ という変数(外部コマンドを呼び出した時の終了ステータス)で アクセスできるわけだし しらないならシェルスクリプトを勉強してくださいって言うしか無いな なんならbashのドキュメント引用しようか? return [n] 指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最後に実行したコマン ドの返却ステータスになります。 関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行 中である場合、 シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの 終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で . によるスクリプトの実行中以 外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 RETURN トラッ プ に設定されたコマンドが実行されます。
777 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:47:32.93 ID:DWeKr+Az.net] >>765 その違いは今、重要なのか?w returnの意味なんて言語によって違うって話をしてるんだが
778 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:49:09.36 ID:238K9SSk.net] >>764 マジか 残念ながらが同一人物に見えるとやはりなお思ってしまうよw マジか。そんなんで偉ぶるwなんの意味があるのだかさっぱり そもそもマシン語ではない、アセンブリ=ニーモニックだし。ニーモニック命令は3文字にという昔の風習なだけだろうに 豆知識 そもそも、そんなRETでもいいけどReturnすらないCPUもある。POPしてジャンプという なんだかなあ
779 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 03:55:47.57 ID:238K9SSk.net] あら。なんかすまん、別人なのね >>766 んー、なんで「知らない」前提なのかさっぱりわからん。一般的な関数の形態としての話だし、その言っていることは>>743 ,744で書いているのだけど(もちろんそんなことは前々から知っていての) あくまでも関数の形態としてのreturn文ね。わからないかなあ なにか俺は知らないを前提に書いているようだけど、なんで??
780 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 04:19:21.82 ID:238K9SSk.net] ん?? ID:DWeKr+Az が頓珍漢に横入りしたのかwwなにをのたまっているのかだかな。もうあんたはいいよw同じこと繰り返してるし >>768 ,769はID:o4tQ0hzeかと思って書いた >>761 はID:o4tQ0hze にご理解いただけたということでよろしいのですかね??
781 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 06:38:15.47 ID:Ge1fP5ct.net] シェルスクリプトはシェルスクリプトだっていってんのに 俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない! といわれても、 うんじゃあ、シェルスクリプトを使えるように、シェルスクリプトの勉強をしましょうか? としか言えんわなw
782 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 07:03:56.09 ID:R26grXOk.net] アセンブラじゃなくて機械語だってすごいよなw
783 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:47:07.26 ID:238K9SSk.net] >>771 どう読んで、そう思っているのか?? 俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!なんてこれっぽっちも言ってないけど 他の言語の関数とはやっぱ違う他の言語の関数と同じようにはできないねというだけだが?端的には>>735 と所詮コマンドということ POSIXとしてもfunctionと名乗ってるけど、一般的=他の多くの言語のfunctionとは違うfunction、functionというよりコマンドだなやっぱちう それがシェルスクリプトのfunctionで他の言語のfunctionとは違うって強く俺に言いたいんですかね? いいよ、めんどくさいから読まなくても。レスするのもめんどくさいからw >>772 まあ、そういう意味じゃないんだけどね(どういう意味のレスなのかイマイチだがw) マクロアセンブラがあるようにアセンブラはどのようにもできる、やろうと思えば。縛りはそこじゃなくて、機械語だなという また、機械語になんて関数なんて概念ないからねって話にも膨らむのになというw
784 名前:デフォルトの名無しさん [2019/10/02(水) 09:15:47.03 ID:gGwgwb6G.net] 俺はたぬきしか知らないなんて言ってない! みかんはたぬきとは違う!
785 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 09:19:32.36 ID:R26grXOk.net] 機械語に関数の概念が無いってすごいよなw
786 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 09:23:09.06 ID:238K9SSk.net] めんどくせえなあ。とんちんかんな変すぎるレスいらんw 知らなかったのはサブルーチンとして使うのと関数として使うのにコストの差が思った以上にあったというだけだな。functionなんだからそんなに差が無いようになんかあるだろうと思い込みによる それだけだよ 別にだから
787 名前:関数のように使わないとも言わんし、いままでも使ってるし変わらずに使うけど [] [ここ壊れてます]
788 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 09:25:03.86 ID:238K9SSk.net] >>775 無いよ。機械語を駆使して関数を作ってるっていう 機械語レベルの関数って?まあ、そんなCPUがもしかしたらあるのかもだが、知らんんなあ
789 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 09:39:55.43 ID:238K9SSk.net] 機械語にはサブルーチンはある。なきゃ困る(主にどこのアドレスに返ってくるのかのため)。単なるサブルーチンコール、引数の概念とかも無いw 引数も返り値(サブルーチン+返り値=関数)も、単なるmoveとかpushとかで「適当」なとこに入れての(主に高級言語(ほぼCだが)の仕様にあわせての)で、機械語の概念では存在しない おしまい
790 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 10:11:40.69 ID:caSqV8Sl.net] これマジ?
791 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 10:39:50.67 ID:238K9SSk.net] この板にもあるだろうと思ったらあったし、 「関数」で検索したらアセンブリで関数というのを説明しているようなレスもあるやん 調べろよそのぐらいw
792 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 10:46:24.58 ID:238K9SSk.net] ああ、すまん。勇み足だった。よく読んだらあんま詳しくはないかな ある程度知っていての注意点ぐらいだった
793 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 10:51:24.96 ID:238K9SSk.net] お詫びに探してきた https://nw.tsuda.ac.jp/lec/i486/ 興味があるなら、読もう。アセンブリの部分をも
794 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 10:54:19.14 ID:caSqV8Sl.net] サンクス 読んでくるわ
795 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:01:36.56 ID:vYvaxxoe.net] だいたいシェルスクリプトと機械語なんて超相性悪いから シェルスクリプトの概念を例える別の言語として機械語(含むアセンブリ言語)は最悪の選択ではw シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか 適用範囲の節で明言してるし。 (つーかこの喧嘩って俺がkshの速度を持ち出したことが発端なんだな… 良かれと思って余計なこと言わなけりゃよかった)
796 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:18:14.46 ID:238K9SSk.net] >>784 >シェルスクリプトの概念を例える別の言語として機械語 じゃないよ、そもそも言いだしたのは。俺じゃないけど。単にreturnという「語」のに絡みついてだけの>>747 まあ、機械語(=1対一でしかないアセンブラ)では当たり前なんだが、上記の通りに てか、めんどくさいから読まないでしょ?レスするのめんどくさいよw
797 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:26:54.15 ID:238K9SSk.net] >>784 >シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか >適用範囲の節で明言してるし CPUによって全然違うし(CPUメーカーが作るもんでしょう)なあ。標準化なんてする範疇じゃないんじゃないかな >kshの速度を持ち出したことが発端なんだな… いや、違うよ。kshの件は早々に終わっているといえば終わってる。そんなのが全く関係ないとこでながながとなってるだけだな その前の俺の思惑wからだな、長々としている原因は。強いて言えば
798 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 14:05:10.23 ID:D8VruPt/.net] >>718 , >>719 が既に頭悪そうなんだよ。その辺りから見直したらいいんじゃないかな。
799 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 14:31:23.77 ID:238K9SSk.net] よくわかんないなw
800 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 17:06:22.98 ID:em13adMU.net] ファイル名に()が入ってるやつをリネームしようとしたら Syntax error: "(" unexpected と言われる・・ ファイル名から()取り除いたらうまくいきました どうすればよいでしょうか
801 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 17:19:25.51 ID:ccSnb7w3.net] touch "foo()bar" で作れたからそれかな あるいは 正規表現のできるrenameツールに任せちゃう https://paiza.io/projects/GgkMgqOqyzwwgbmu-Fn-Vg https://pastebin.com/pYBipcQt ~/bin/rename.pl dry s/foo../foo/ foo\(\)bar foo()bar => foobar ~/bin/rename.pl run s/foo../foo/ foo\(\)bar
802 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 20:34:07.49 ID:9nRFYl/a.net] >>789 file="aaa (bbb) ccc" mv "$file" "aaa" シェルスクリプトでは引数の変数は""でくくるもんだ 常識だからな shellcheckでチェックしろ
803 名前:デフォルトの名無しさん [2019/10/02(水) 20:52:22.16 ID:56vpBHGI.net] >>789 ファイル名をシングルクォートまたはダブルクォートで括る。またはそのようにシェルが特別な解釈をしてしまう文字の直前に \ を入れる。
804 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:15:58.71 ID:SqD9WxB/.net] 空白絡みで便乗質問です。 スクリプトがあるディレクトリを変数に入れるために、よく、 BASEDIR=$(cd $(dirname $0); pwd) みたいなの書くと思うんですけど、 スクリプトを呼び出す際の相対パスや絶対パスに空白があっても大丈夫な場合はどう""をつければいいんでしょうか。 いつも試行錯誤するんですけどうまくいかなくて空白禁止にしちゃってます。
805 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:16:32.35 ID:SqD9WxB/.net] 大丈夫な場合→大丈夫にしたい場合、です。
806 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:41:53.26 ID:kXokk7Ss.net] dirname "$0"じゃダメな理由はなに?
807 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:56:16.10 ID:WHDqtNcX.net] "$(dirname "$0")" じゃない
808 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 02:58:37.36 ID:DFQVUXe/.net] >>793 BASEDIR=$(cd "$(dirname "$0")"; pwd) BASEDIR="$(cd "$(dirname "$0")"; pwd)" ↑これは不要 "引数"として渡す場合に必要。 変数への代入は引数ではないので不要
809 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 07:38:56.48 ID:vim6DLSQ.net] >>790 ありがとうございます 今のところThunarに標準昨日の一括リネームでなんとかなりました >>791 ,792 ls: 'aaa (bbb) ccc.jpg'にアクセスできません: みたいな感じになりましたね
810 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 08:37:13.31 ID:/bA39X9L.net] 小数の計算がPOSIXで標準化されるって本当? これどうにかしてほしいんだが $ zsh -c 'echo $((0.1+0.2))' 0.30000000000000004 固定小数点をサポートしてくれよ。
811 名前:デフォルトの名無しさん [2019/10/03(木) 09:12:38.31 ID:BSBvRGI4.net] 各言語での 0.1 + 0.2 の結果 0.30000000000000004.com/
812 名前:デフォルトの名無しさん [2019/10/03(木) 09:41:30.99 ID:T62xH6xP.net] 言語というよりはどういうライブラリ使っているかの問題だと思うが
813 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 09:46:51.64 ID:wbZFe5vy.net] きちんと0.3返す言語は 分子と分母の2つ記録するから速度は遅くなる 遅いシェルスクリプトの選択した方法は正しい
814 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 09:50:59.70 ID:/bA39X9L.net] いや、誰が浮動小数点数的な答えを求めてるのよ? 誰も数学的に間違った答えなんか求めてないでしょ?
815 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 13:46:15.91 ID:oxXSy4fC.net] 固定小数点なんて採用することはないな 提案してみろ、まずはStandard C Libraryとして
816 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 14:46:29.02 ID:Fw9k5QN4.net] >>801 ライブラリというより、内部での浮動小数点の形(float,double,long doubleのどれか。いまどきfloatは無いか)、および、いつ丸めてるかだけじゃね >>800 のも大体は結局はCでの結果でしかないだろう。デフォのdoubleの結果がほとんどだろう 例えば、awkは問題ないように見えるが。2.3 / 0.1 = 23 だが、int(2.3/0.1) = 22 になるのも
817 名前:デフォルトの名無しさん [2019/10/03(木) 14:56:31.03 ID:gitagY/F.net] >>805 いや、だからライブラリだろ。 同じ言語でも内部表現に関する決まりのない言語なら例えばBCDで保持するようにしてそれ用のライブラリで計算や10進文字列変換したって構わないんだからな。
818 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 15:03:35.77 ID:Fw9k5QN4.net] そういうある意味特殊なことをしようとする意志のがあればな 結局はCなんだよどういう言語でもああいう部分は。そしてCがそうだからただそうなだけ。わざわざ言うようなことをするのは極めて少ないだろ 浮動小数点がIEEEで決められてる正規なものだし。特殊なプログラムを使えということだよ=シェルとかに求めるのは現在のコンピュータ界隈では無理筋だな
819 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 15:08:16.36 ID:wbZFe5vy.net] perl か何かに任せておけ #!/usr/bin/env perl use bigrat; my ( $ss, $F, $ISO ) = (@ARGV); unless ( defined $ISO ) { $ISO = 100 } my %shutter_speed = ( 30 => -5, 25 => -14/3, 20 => -13/3, ...... ); printf "%s\n", 0/1 + $shutter_speed{$ss} + $F_number{$F} - $ISO_number{$ISO}; ただし perl bigrat だと 0/1 + を抜くと型が整数処理されるというわけのわからん挙動するケースがあったから 別の言語がいいけど
820 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 17:47:54.90 ID:vTPkh0Cq.net] >>807 浮動小数点とIEEE754は同じ意味じゃないから語弊が生まれるよ。 文字コードとUTF-8ぐらいの関係だろう。 そして大抵の小数を扱えるプログラムがCでIEEE754に準拠した浮動小数点による取り扱いをしてるって意見は、全然同意できないな。
821 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:03:01.77 ID:NYKgu9W2.net] 1. 数学的には正しくない。 2. 速度のために正確さを犠牲にしている。 3. 誰も間違った答えは望んでいない 仕様だから〜とかいう話じゃないんだよね。 本当はみんな正しい答えが欲しい。 シェルスクリプトに速度は重要じゃないんだから 正しい答えのほうが便利だろ
822 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:39:51.77 ID:K4DSf+RO.net] ほとんど近似値でたりるし必要なら自分でつくるなりすればとしか思わないよ
823 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:40:45.48 ID:Fw9k5QN4.net] >>809 浮動小数点とIEEE754は同じ意味じゃないって?何を言いたいのかわからん IEEE準拠じゃない独自のがあると?今時はFPUでやってるもんだし、速度なんぞを犠牲にしてまでもそういうのを「わざわざ」をやっている=それがウリになるからすぐに探せるんじゃないかなあ? >>810 コンピュータサイエンス的にはそんなのはない=シェルスクリプト作る人も、そんな目新しいことをわざわざしないだろうとしか思えんな、いくらそう言っても
824 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:14:25.67 ID:A9ow2usS.net] >>811 0.1+0.2が0.3にならなくてもいいよっていう業界を教えてくれ
825 名前:デフォルトの名無しさん [2019/10/03(木) 20:20:38.23 ID:gitagY/F.net] 適当なところで丸めりゃ良いんだからいいじゃねえか
826 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:23:06.87 ID:Fw9k5QN4.net] 少数なんて大体でしかないなんて常識だと思ってたのにな。少数使わないでも結局できたりするので、また、固定少数でも結局工夫が必要なのには変わりないので なんでそんなに少数の正しさに拘っているのだか、どういう業界でそういうのをしかもスクリプトオンリーで書かなきゃならないって想像できないな
827 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:30:23.62 ID:KR7C+a5e.net] >>813 必要なら用途に合うもん使えよ
828 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 23:39:56.70 ID:5pSilKMJ.net] 気が付いたら少数を使うことがほとんどなくなった 利子の計算ぐらいだが、これは何桁で計算を打ち切るか あらかじめ決めておく。安易に double とか使わない
829 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 23:43:58.79 ID:6kVVAM38.net] 簡単なシェルスクリプトしか書けんが何が覚えとけって言語ある? s以外のsedの機能をようやく覚えたけどコマンドは文字列操作系で手一杯だわ やっぱりperlの呪文覚えるしかないか
830 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 23:49:00.65 ID:wbZFe5vy.net] パイプが強烈だから文字列処理に強い perl でしょ オブジェクト指向はいらない
831 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 00:41:14.19 ID:jIZSSFYe.net] >>818 JavaScript
832 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 00:43:47.35 ID:jIZSSFYe.net] >>817 それな。何桁で計算を打ち切るだと、どこで誤差が出るか想定しやすいが doubleとかだと、桁数小さくても誤差が出るから、想定しづらいんだよね。 シェルスクリプトは型が文字列しか無いんだから、 内部の都合である数値型には影響されてほしくないな
833 名前:デフォルトの名無しさん [2019/10/04(金) 01:20:38.52 ID:5l5U7bxj.net] >>812 文字コードってのは文字に番号を割り振って取り扱いますよ、という概念。 浮動小数点も一緒で、有限の長さの小数を、小数点の位置を自由にすること (仮数部と基数部で表現する)ことで表しますよって概念。 各ベンダーが独自に実装したら不便極まりないから文字コードにおけるUnicode(とかUTF-8)と同様IEEE754という標準がある。 浮動小数点演算、と言ったときにそれは一概にIEEE754内部表現を用いた演算とはならない。 https://ja.wikipedia.org/wiki/任意精度演算 の方式の中にはIEEE754でない浮動小数点表現を取り扱ってるものだってあるだろう。 BCDで小数が扱えるライブラリだってそう言うのが多いと思うよ。 IEEE754の仕様の浮動小数点演算で十分な場合は、CPUに便利命令が用意されてて1桁ずつ計算とかしなくても 一発で計算が求まるからIEEE754の浮動小数点は使われている、というだけでしょ。 浮動小数点っていう大きい概念がどういったものかってのと、IEEE754はその概念を実現するための一例でしかないってのを、 Wikipediaなり読み込んで理解したほうが良いと思うよ。 ほんと、文字コードとUTF-8は同じものだ、って言ってるぐらいトンチンカンだから
834 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 01:34:09.77 ID:N11Kz3K2.net] >>813 セブンイレブンとか
835 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 01:44:25.75 ID:eSKeLXlH.net] >>818 1-liner、パイプ、CSV・テキスト処理、クローラーなら、可読性が高い、Ruby ! Perl のような謎のような記号は少ない
836 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 03:06:51.70 ID:gCVTKDJQ.net] >>822 他のが無いというのではなく、実際に使われている多くはというのだよ 実際に使われているのはどれだけあるの?わざわざ使ってるのならそれは意味があるのだから、そうナニか書いてあってすぐにわかるだろうという。例えばbcのように https://ja.wikipedia.org/wiki/IEEE_754 多くのプロセッサなどの〜 から書いてある通り。Javaがそうでないように書いてあるが、 https://www.ibm.com/developerworks/jp/java/library/j-jtp0114/index.html 同様に、java.math.BigDecimal が提供する任意精度の10進数もアプリケーションで使用されることは少ないため、開発者に無視されているケースがほとんどです しかし整数を中心としたプログラムに、突如、整数以外の表現が出てくることがあります。たとえば、JDBCではSQLDECIMAL 列の優先変換形式としてBigDecimal が使用されます なんてある意味それを表しすぎなくらい(まあ、ここは作る側ではなく使う側を言ってるけど) CPUに便利命令ってFPUに対するのこと?一発で計算が決まるからという簡単だからとかじゃなくて、FPUがあるのはハードで支援用意しないとそもそも浮動小数点は重い演算だからなんだけど >文字コードとUTF-8は同じものだ、って言ってるぐらい いや、言ってないけど、なにか思い込みが激しいね。IEEEが利用されないのも普通という考え方もそうだが
837 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 03:13:49.05 ID:gCVTKDJQ.net] >>825 >Javaがそうでないように書いてあるが ああ、違ったしつれい。IEEE 754 を必須か 使ってないってどれだ?どういう理由でという思いがあって、おおと思ったんだけど
838 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 04:25:45.39 ID:jIZSSFYe.net] もうさ、ハードで固定小数点数演算できるようにしたほうが良いんじゃね? 時代的にさ
839 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 05:02:19.85 ID:Lr70dHDq.net] BCDはCPUで支援してた(そういう命令があったが)ようだが、無くなったっぽいという BCDは速度的に有利な側面があるからわざわざそれ専用に用意しなくてもで無くなったかもしれない
840 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 07:56:41.21 ID:sZOtDaP2.net] >>827 お前さんがこだわるほど他の人は必要だと思ってない。あったら便利なケースもあるかも知れんがコストなどに見合わないから誰もやらない。
841 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 08:55:49.66 ID:UTOwlhyp.net] 消費税の話もあるし、固定小数点は重要だよ
842 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 11:44:19.51 ID:VMw2vpri.net] 固定小数点演算なんて整数演算と同等だからわざわざハードで実装しなくても問題ない
843 名前:デフォルトの名無しさん [2019/10/04(金) 14:32:11.23 ID:hcjI0QEW.net] >>818 そのままPerl覚えれば良い。 というのは、昔からあってあちこちで使われており、だいたいの Linux distribution はデフォルトでインストールされるような言語であるため。 インストールや環境整備で悩まなくて済む。後からモジュールを追加するとしても最初からrpmファイルがあったり、なくてもCPANを利用して簡単にインストールできる。 歴史が長く昔から使われて来たのでモジュールも沢山あり、またそれを解説しているサイトも多い。
844 名前:デフォルトの名無しさん [2019/10/04(金) 14:36:19.79 ID:hcjI0QEW.net] >>824 知らない言語を見ればどれも謎の記号だらけに見えるとは思うけどね。 まあでもPerlは確かに多いかな。なるべく使わないようにも書けるが。