[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/03 20:17 / Filesize : 272 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その31



1 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 23:17:50.64 ID:L+B8OP2P.net]
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/

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は確かに多いかな。なるべく使わないようにも書けるが。

845 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 14:37:02.99 ID:5wfXTPgW.net]
alpine linuxでperllインストールされてないんだが?

846 名前:デフォルトの名無しさん [2019/10/04(金) 14:42:01.29 ID:hcjI0QEW.net]
>>831
そうそう。整数計算後に割って桁合わせすれば良い。

847 名前:デフォルトの名無しさん [2019/10/04(金) 14:42:43.80 ID:hcjI0QEW.net]
>>834
そうか。まあそういうのもある。

848 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 14:43:52.73 ID:M3k51a5A.net]
必要ならインストールすれば良いだけだ

849 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 14:59:17.54 ID:5wfXTPgW.net]
余計なものに依存したくない



850 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 17:13:04.07 ID:/U6oHgYD.net]
そりゃお前の趣味だからな
perlを使いたいならインストールする
当たり前の話だよな

851 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 21:55:54.53 ID:a0HWEhLa.net]
perlを使いたいわけじゃないからなぁ

852 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 22:57:45.34 ID:eSKeLXlH.net]
Perl, Python2・3 は最初から、入っているけど、
Ruby も、apt で、簡単にインストールできる

ただし、Ruby 2.3 〜 2.6 で、プログラマーが、新しめの書き方をしていた場合に、
古いバージョンで動かないことがあるかも

853 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 09:16:44.91 ID:XBuBF2Rc.net]
全員がsudo権限あるわけじゃないしな・・・

854 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 09:44:40.51 ID:462kqzf/.net]
perlなんて普通に入ってるからな
Solaris、AIX、HP-UX、FreeBSD、Ubuntu、Centos、Redhat、Fedora
俺が触ってきたシステムではデフォルトで入ってたな
入ってない方が少数派だろ

855 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 11:20:12.25 ID:NnE09bAt.net]
少数派だが入ってない

856 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 11:24:56.60 ID:kChpVj98.net]
所属する研究室のMFにも入ってねーな。
Bシェルとかは(もちろん)入ってるけど

そういう点で言えばPOSIX準拠のシェルがあるようなシステムにはPerlも入っていて
PerlもないようなシステムにはPOSIX準拠シェルもないのかも知れんw

857 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:03:22.79 ID:NnE09bAt.net]
だからAlpine linuxにはPOSIX準拠のシェルは入っているが
Perlは入ってないんだって。
いい加減Perl依存やめようぜw

858 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:15:46.78 ID:rthNV3zo.net]
俺達もそろそろPOSIX汚染から脱却しようぜ

859 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:17:46.00 ID:NnE09bAt.net]
>>847
じゃあ言い出しっぺのあなたから、POSIXが含まれてる
LinuxやBSDやUnixやMacやWindowsを使うのをやめてください



860 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:21:19.21 ID:rthNV3zo.net]
そもそも使ってないし

861 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:28:35.75 ID:NnE09bAt.net]
サーバー側で使われてる

862 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:38:20.58 ID:462kqzf/.net]
相変わらずPOSIX原理主義者が張り付いてるんだな
日本は信教の自由はあるが強要するのは犯罪だ
他人を巻き込まないで1人でやってろよ

863 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:54:03.04 ID:NnE09bAt.net]
だからPOSIX原理主義じゃないってw
Alpineはbusybox使ってるからPOSIX未満なんだよ

864 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:05:31.69 ID:462kqzf/.net]
お前はperl使いたくないんだろ?
お前の自由だし好きにすればいい

それを他人に押し付けるなと言っている

俺は普通にperlを使う
俺の自由だし好きにする

以上

865 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:12:15.17 ID:rthNV3zo.net]
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ.  終  了 │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛

866 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:16:18.11 ID:NnE09bAt.net]
誰もPerl使うなって言ってないだろ。
Perlが入ってない環境があるという
事実を言ってるんだが

867 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 14:00:34.35 ID:mC4FM69a.net]
>>845
そのミッドフィールダーってなに?

868 名前:デフォルトの名無しさん [2019/10/06(日) 14:56:55.93 ID:VRfDnOhz.net]
マネーフォワードだろ。

869 名前:デフォルトの名無しさん [2019/10/06(日) 17:41:58.00 ID:3lXqNGxa.net]
容量削減のためにPerlだけ抜くのも変だしそれ目的なら他のも入ってないのでは?



870 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 21:01:12.68 ID:TprJMO+0.net]
まぁないものどうこう言っても始まらない

ただwin のiE6とかのようにubuntu以外は淘汰されていくだろうから
最終的には問題ないんじゃない?

871 名前:デフォルトの名無しさん [2019/10/06(日) 21:15:53.96 ID:/W6lnfS0.net]
Linuxはdistributionごとに色々目的が違うからPerl入ってないのがあっても特に不思議はない。
AndroidのベースのLinuxにも入ってないし、普通はそこでは必要とされない。

872 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 21:31:35.20 ID:1e7RWsdc.net]
AndroidをLinuxとして使ってるのはどれだけいるのかと

873 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 22:18:30.79 ID:+aq+gJyQ.net]
それ向けの端末エミュレータとかシェルスクリプト編集実行とかは結構種類あるけどね
割合は少ないだろうね

874 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 02:35:02.37 ID:qQU+qyu9.net]
そういう人はperlも必要なら入れるな。perlに限らず

875 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 08:39:27.35 ID:4YPUQoiH.net]
>>818 Python やっとけ。 perl は成仏させろ

876 名前:デフォルトの名無しさん [2019/10/07(月) 12:58:26.99 ID:lSqRbxbA.net]
PerlはCの如くしぶとく残ってしまうと思うなあ。

877 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 14:23:04.89 ID:MItW4Ls8.net]
sedやawkを忘れたんで代わりにperlを使うことが結構ある

878 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 15:51:12.82 ID:Wc5EJs/z.net]
perl -peをsed代わりに使ってるだけでperl自体には興味ないや
正規表現しか出番ないし使う機会がないんだよね
awkとかgrepとかどうせ他のコマンドも

879 名前:覚えなきゃならんし []
[ここ壊れてます]



880 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 14:32:15.36 ID:C04IGCd6.net]
>>865 残ることは残るだろうけど、誰からも見捨てられてる状態で生き延びていても学ぶ価値はない。

プログラミング言語人気トップ8、過去15年間で安定 - 例外はPython
2019/10/07 14:16 後藤大地
https://news.mynavi.jp/article/20191007-905781/

TIOBE Softwareから、2019年10月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語がどれだけ話題に
なっているかをインデックス化したもの。(中略)

TIOBE Softwareは発表の中で、毎年新たなプログラミング言語が登場しているものの、TIOBE
Programming Community Indexのトップ8は過去15年間でほとんど変化していないと説明した。
Perlが消えてPythonに入れ替わったことや、Objective-Cが消えてSwiftに替わったというのが大きな
例外で、それ以外に大きな変動はないと指摘している。

ただし、プログラミング言語の分野に関してはいくつかの傾向があるとして、その例としてPHPやPerlから
Pythonへ移っていること、新しいプログラミング言語としてDart、Scala、Lua、Rust、Kotlin、TypeScript
などが人気上昇の渦中にあることなどを説明している。

10月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20191007-905781/images/001.jpg

881 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 15:00:13.27 ID:dg9qT1Hg.net]
Perlはsedやawkと同じ位置で見ないとだめだよ
シェルスクリプトを書くときにsedやawkのように使う道具のひとつ
もちろんシェルスクリプトをまるごとPerlのスクリプトに置き換えてもいいけどそれは別の話
Perlを排除するのは武器を一つ捨てるようなもので損してるよ

882 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 15:03:58.28 ID:4CpPhkv4.net]
汎用言語としてはpython の時代に移ったかもしれないが
文字処理言語としてはいまだ現役

883 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 15:16:45.62 ID:wc9EJfFY.net]
>>869
と言ってもお前、sedやawkが使えないから
perlを使ってるだけやん。
お前の問題であって、perlである必要ないやん

884 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 15:49:08.88 ID:dg9qT1Hg.net]
俺当然sedもawkも使えるんだけど?
awkで複雑になる処理をPerlで可読性高く楽に書いてるってだけ
あんたも使える道具をうまく選べばいいんでPerlを知らなくても気にするな

885 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 16:39:54.73 ID:9VgyN7XE.net]
「Perlの方が楽に書ける」なんていうのは個人の嗜好に依存してて,ほとんど無根拠に近い。
もしPerlの「素晴しさ」とやらを報しめたいのなら,もっと客観的な事実――導入率・実績云々――を提示したほうがいいよ。

尤も,俺に言わせればAWKのほうが〜Perlのほうが〜なんていう議論とも呼べない喧嘩それ自体くだらねぇけどな

886 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 17:07:54.66 ID:uaD7+k1O.net]
>>872 sed もawk も使えるならPython を使えばいいじゃん。
お前がPythonを使えないだけだろ。

887 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 17:13:16.90 ID:gh1TIWVl.net]
python使ってわざわざ長いコード書いてどうするの?

sed -e 's/ABC/XYZ/' file1.txt

python -c 'import sys,re; [print(re.sub("ABC","XYZ",l,1),end="") for l in sys.stdin]'

888 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 18:40:06.69 ID:4CpPhkv4.net]
gnu sed なら -e すら省けるんだよな

889 名前:デフォルトの名無しさん [2019/10/08(火) 18:40:15.32 ID:g ]
[ここ壊れてます]



890 名前:O+Oxfwr.net mailto: こうして宗教戦争が始まったのです。 []
[ここ壊れてます]

891 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 19:07:13.65 ID:/hvysQLZ.net]
pythonはワンラインにはあまり向かんのは同意。
フリーフォーマットじゃないんで当たり前といえば当たり前か。

892 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 19:30:38.22 ID:vS76WaY3.net]
宗教戦争は自分の信じるものが正しく、それ以外は認めないという非寛容が原因で始まる

893 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:18:53.91 ID:CaMm18My.net]
python ワンライナーに挑戦 〜 初心者のお勉強 m(_ _)m - Qiita
https://qiita.com/wyamamo/items/667c79db7edbaa9a46a7
闇Pythonista入門(Pythonワンライナーのテクニック集) - Qiita
https://qiita.com/cocuh/items/37bfdc0f24750127e7d3

杓子定規にするからこうなる
知恵比べはまた別の課題だろうに

894 名前:デフォルトの名無しさん [2019/10/11(金) 19:00:05.85 ID:QtmRuluN.net]
case $value in
*-*=*-*)
esac

こんなふうに、*が複数ある場合の動きとかちゃんと仕様化されてるの
どのシェルでも同じように動く?

895 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 19:51:09.99 ID:5TKzffM3.net]
「されてるの?」
なのか
「されてるの(だ)」
なのか。

896 名前:デフォルトの名無しさん [2019/10/11(金) 22:19:25.99 ID:EZwTHuUV.net]
>>881
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13_02

897 名前:デフォルトの名無しさん [2019/10/12(Sat) 11:56:42 ID:6fabclhr.net]
>>883
意味がわからん

abbb 、という文字に対して、a*b はマッチするのが正しいの?
aに続く残りのbは*で全部消費されるんじゃないの?


$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c) echo ok; esac'
$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c*b*c) echo ok; esac'
$ sh -c 'case "a-b-c-b-c-b-c" in (a*b*c*b*c*b*c) echo ok; esac'
すべてokってでる

どういうアルゴリズムなのかわからない

898 名前:デフォルトの名無しさん mailto:sage [2019/10/12(土) 13:05:32.76 ID:19ZHiYan.net]
Perlの正規表現なら最長マッチがデフォ

899 名前:デフォルトの名無しさん [2019/10/12(Sat) 17:15:42 ID:1KIHwFcK.net]
IPアドレスもgreedyが基本だな。



900 名前: mailto:sage [2019/10/13(Sun) 14:15:24 ID:wtTHifIn.net]
ワイルドカードもだよね

901 名前: mailto:sage [2019/10/15(Tue) 20:13:38 ID:tkdZ32xn.net]
>>884
感覚的に分かりやすい
https://media.theync.com/videos/6/9/0/4/8/6904895d700f71ce3e9.mp4

902 名前:デフォルトの名無しさん [2019/10/16(Wed) 03:31:59 ID:Pvq8peJ9.net]
>>888
グロ

903 名前:デフォルトの名無しさん [2019/10/16(水) 08:08:38.68 ID:9/jaba51.net]
変数名を変数で指定できるのは欠陥じゃねえ

904 名前:デフォルトの名無しさん [2019/10/17(木) 13:11:40.29 ID:huR1Dm0j.net]
はー、すげー。yashの実装に感動した

getopts "ab" OPT -ab
echo "$OPT $OPTIND" # => a 1:2

getopts "ab" OPT -ab
echo "$OPT $OPTIND" # => b 1:3

getopts "ab" OPT -ab # exit status = 1
echo "$OPT $OPTIND" # => ? 2

905 名前: mailto:sage [2019/10/17(Thu) 16:55:00 ID:PM8kIYTO.net]
if ls "*.txt" > /dev/null 2>&1
then
echo "OK"
else
echo "NG"
fi

まったくうまくいかない
なぜ単なるファイルの存在確認だけにこんな苦労するのか

906 名前: mailto:sage [2019/10/17(Thu) 17:04:24 ID:z1/RyPhF.net]
ファイルの存在確認なら、-fを使えばいいだろ?

907 名前: mailto:sage [2019/10/17(Thu) 17:05:16 ID:e7ZwLQTq.net]
# # ls *txt && echo ok || echo bad
ls: '*txt' にアクセスできません: No such file or directory
bad

# # touch foo.txt
# # ls *txt && echo ok || echo bad
foo.txt
ok

こんな要領か?

908 名前: mailto:sage [2019/10/17(Thu) 17:05:47 ID:z1/RyPhF.net]
あ、ディレクトリに *.txt があるかどうかってことか?

909 名前: mailto:sage [2019/10/17(Thu) 17:08:50 ID:PM8kIYTO.net]
>>893
ところがワイルドカード使うと途端に何も引っかからなくなる



910 名前: mailto:sage [2019/10/17(Thu) 17:09:26 ID:PM8kIYTO.net]
>>895
そうです

911 名前: mailto:sage [2019/10/17(Thu) 17:10:05 ID:z1/RyPhF.net]
getopts vs getopt だけどさ、
BSDにおいてgetoptのメリットって何?

BSD版のgetoptはロングオプションに対応してないし、
引数にスペースが入ったらうまく行かないし
使い勝手悪いと思うんだが。

もしかして最初に作られたのがgetoptで
それを改良してgetoptsがシェルビルトインとして作られた。
(その後GNU版getoptが改良され、getoptsよりも便利になった)
という流れだったりするの?

912 名前: mailto:sage [2019/10/17(Thu) 17:10:16 ID:e7ZwLQTq.net]
普通のプログラミング言語と違って
シェルスクリプトはブーリアンの分岐は可能なら
if else 使うよりも && || が見やすく良いと思う

913 名前: mailto:sage [2019/10/17(Thu) 17:12:52 ID:PM8kIYTO.net]
>>894,899
いけた
分岐後の処理も大したことしないしこれでやってみようと思う?

914 名前: mailto:sage [2019/10/17(Thu) 17:13:24 ID:z1/RyPhF.net]
>>896
アスタリスクを使うと、シェルが解釈して、
例えば、 ls * だと、 ls file1 file2 file3 file4 って実行したのと同じことになるんだぞ。
lsコマンドの中からはアスタリスクが使われてるかどうかなんてわからない。

そしてダブルクォートで括ると、lsコマンドの中から引数は "*" という文字列が渡されたようになるんだよ。

915 名前: mailto:sage [2019/10/17(Thu) 17:14:21 ID:ieavKq01.net]
うまくいかなかった原因分かった?

916 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 17:19:49.73 ID:z1/RyPhF.net]
>>899
それだめ。 shellcheck使ってみ、エラーになる。

shellcheck において && || みたいな三項演算子風な使い方は
func && VALUE=ok || VALUE=ng
という書き方(変数代入)のみ認められる。

func && foo || bar
は認められない。

なぜかと言うと、
1. func が 正常終了して
2. foo が 異常終了すると
3. bar が 実行されるから

変数代入に限れば必ずVALUE=okは正常終了するから、
この書き方に限って許されてる。
だから、一応fooが必ず正常終了するものであれば、使えなくはないけど
静的解析ではそれを知ることが不可能なので、shellcheckはエラーになる。

あともう一つ、barが異常終了したとき、&& || だと $?はエラーになるが、
ifで書けばfi終了後、$? は正常終了になってるという違いもある。
だからset -eでの挙動が変わる。

917 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 17:21:53.83 ID:z1/RyPhF.net]
もちろん、&& 単独、もしくは || 単独で 使うならば問題ない。

func && foo とか func || bar ならOK

918 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 17:26:43.45 ID:PM8kIYTO.net]
今度は ls "$dir/tmp/*.txt"
みたいなことしたらアクセスできませんみたいなことを言われた

>>901
なるほど
>>902
多分"*.txt"ファイルにアクセスしようとしてできないって言われたことが原因?
でもなぜかls *.txtみたいに、ファイル直だとイケる

919 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 17:33:24.48 ID:z1/RyPhF.net]
あー、やっぱりそうなんや

https://en.wikipedia.org/wiki/Getopt
https://en.wikipedia.org/wiki/Getopts

getoptは1980年頃つくられた。初期のgetoptは低機能
その改良として getopts が1986年にBourne shellに実装されたらしい。

その後、getopts (Solaris) と getopt (GNU) それぞれ違うコマンドで
ロングオプションがサポートされ

どちらでもないBSD(macOS含む)では、従来どおり
低機能な getopt と それを少し改良した getopts があるが
どちらもロングオプションはサポートしてないと



920 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 17:37:12.84 ID:z1/RyPhF.net]
>>905
だからダブルクォートで括るからいかんのや

ls "$dir/tmp/" * ".txt"
これが正解(スペースは目立たせるために入れただけ)

この書き方ダサいよなw

ちなみに古いシェル(poshだっけ?)でこれがうまく行かない
バグがあるのだが、まあ誰も気にしないわなw

921 名前: mailto:sage [2019/10/17(Thu) 17:40:52 ID:z1/RyPhF.net]
getopts (Solaris) でロングオプションがサポートされたってシェルなんだ?って思ったら、
Solarisでは/usr/bin/getoptsが存在するのか・・・
紛らわしいな
https://docs.oracle.com/cd/E26924_01/html/E29112/getopts-1.html

922 名前: mailto:sage [2019/10/17(Thu) 17:43:27 ID:z1/RyPhF.net]
あ、いや /usr/bin/getopts もあるにはあるが、libcのgetopt()実装が拡張されたから
それを使ってるBourne Shellでも使えるようになったのか

> getopts (Solaris enhanced)
> As a result, this new feature was also available in the built-in command getopts of the Bourne Shell.

923 名前: mailto:sage [2019/10/17(Thu) 17:47:11 ID:PM8kIYTO.net]
>>907
うおおできた!
ls "$dir/tmp/"*".txt" && echo "ok" || echo "ng"
みたいな感じにした
(txtファイルがひとつもないときエラー出るけど!無視)
?

924 名前:デフォルトの名無しさん [2019/10/17(Thu) 19:06:38 ID:yPX5iNuE.net]
ジェルスクリプトってバッドノウハウの塊なんだな…

925 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 21:18:21.03 ID:CFrrzXLD.net]
TeXで書かれた人工知能みて,「バッドノウハウ」って言ってるみたいw

926 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 21:23:39.68 ID:1JFOpLrO.net]
GLOB展開と""内での文字列展開は別物で""内での文字列展開にGLOBは含まれないというだけだけどな

927 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 22:15:54.16 ID:yIl6cqO6.net]
マニュアルにかっちり書いてあるんだけどな
読み解くのは確かに能力が必要だが

928 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 00:25:26.47 ID:DhnYyybT.net]
>>892-897
find . -type f -name "*.txt" | wc -l

-type f は、ファイルのみ。
wc -l は、行数を数える。無ければ、0

929 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 00:33:26.40 ID:l6dCA2lX.net]
$ mkdir tmp && cd tmp
$ touch $'a\nb.txt'
$ find . -type f -name '*.txt' | wc -l
2



930 名前: mailto:sage [2019/10/18(Fri) 00:51:30 ID:DhnYyybT.net]
相対パスなら、-path で、カレントディレクトリからの相対パスで指定する

find . -type f -path "./test/*.rb" | wc -l

931 名前: mailto:sage [2019/10/18(Fri) 02:59:20 ID:Shj9H2hw.net]
なるほろ
bash によるオプション解析 - Qiita
https://qiita.com/b4b4r07/items/dcd6be0bb9c9185475bb
bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita
https://qiita.com/anqooqie/items/a2b607fe984ec982fa21

manはマニュアルだがman自体に取説が必要な皮肉
man manを読む時点で骨が折れるからしゃーない

932 名前:915 mailto:sage [2019/10/18(金) 04:58:51.55 ID:DhnYyybT.net]
Ruby では、これでカレントディレクトリの該当ファイル数がわかる。
無ければ、0

ruby -e 'puts Dir.glob( "*.txt" ).length'

933 名前: mailto:sage [2019/10/18(Fri) 09:56:55 ID:dNt3vJtH.net]
/bin/ls -1d *.txt 2> /dev/null | wc -l

934 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 11:02:02.61 ID:lmpJOwiE.net]
find使うのは有りだと思うがmaxdepthとquitをつけたほうが良い

if test -n "$(find . -maxdepth 1 -name "*.txt" -print -quit)"; then
echo "OK"
else
echo "NG"
fi

935 名前: mailto:sage [2019/10/18(Fri) 11:55:18 ID:O8T9zLoM.net]
>>921
ただしそれらは POSIX 準拠ではない
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html

936 名前:デフォルトの名無しさん [2019/10/18(Fri) 13:39:28 ID:+f5J2l87.net]
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…

937 名前: mailto:sage [2019/10/18(Fri) 14:04:15 ID:e+8RgQym.net]
>>918
暇なときに man と bash の man をちゃんと読み込むことをお勧めする
全部理解するのは確かに大変だが、こんな機能があるということだけ
覚えておいて、現実の問題に直面した時に詳細を再検索するのが
実用的。bash だけの問題ではないが。

938 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 23:14:29.88 ID:m9M+BHHc.net]
bashのmanはメンテされてないんじゃね?

939 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 23:19:16.34 ID:1h1F7NR4.net]
日本語版がメンテナンスされてない(もしくは遅い)だけだよ



940 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:34:03.00 ID:+f1cBD8l.net]
日本語版の記述が少なくて英語版の方だけびっしりとか実にマニュアルらしい

941 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 13:26:03.97 ID:9TTj0TwZ.net]
近頃は無料で web 上で使える翻訳ソフトの質も上がっているし
頑張って読んでくれ。

942 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 19:06:51.24 ID:VYVT60v2.net]
翻訳めっちゃハッテンしてきてるよね

943 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 20:14:11.99 ID:jibveSnU.net]
ウホッ
じゃなくて
なんだ
infoとかそっちしかハッテンしてないとかあるじゃん

944 名前:デフォルトの名無しさん mailto:sage [2019/10/20(日) 17:43:31.69 ID:Tm15VeOJ.net]
まあ、確かに sed の s コマンドのオプションは man にも入れてほしかった。
オプション使えなくなったのかと思ったじゃないか…

945 名前: mailto:sage [2019/10/20(日) 23:14:32 ID:n5s+FSXq.net]
日本語版だけスカスカと言えばlocate

946 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 17:13:45.45 ID:mT54cHzD.net]
まあ裏を返せばそれだけ国際標準から離れていないってことよね。
ar.localeとか酷い……

947 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 21:16:47 ID:SCSOJkPH.net]
あるユーザー(Aとする)が、他のユーザー(Bとする)にのみWrite権限があるファイルを削除するような作業を自動化したいです。

当然そのままでは削除できないので、AからRootに切り替わり、ファイルを削除した後、Rootを抜けてAに戻るというBashスクリプトを作成しようとしています。

AはSudoが実行できない環境で、Expectコマンドもありません。Rootのパスワードはわかっており、平文でシェルスクリプト内に書き込んでも構いません(使用者が数人で、かつ外部に接続できないため。なのでセキュリティの問題は今回は無視)。
このような状態で、どうにか目的を果たすスクリプトはかけますでしょうか。

OSはFedora10、新たにプログラムパッケージ等はインストールできません。

よろしくおねがいします。

948 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 21:41:04 ID:aSOXSPh+.net]
すなおにrootで全部やれば良いんじゃね?

949 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:08:16.20 ID:/woRRfjw.net]
>>934
そもそもAがファイルを消せるようにパーミッションが初めから設定されるようには出来ないの?



950 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:24:13 ID:Ol8k0rNq.net]
>>934
ファイルを削除するだけの実行ファイルを作ってsetuidビット立てて所有者をBにするとかすればできないかな?

951 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:25:13 ID:Ol8k0rNq.net]
追記。シェルスクリプト自体にはsetuidは使えない。

952 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:52:13.48 ID:pvaospDZ.net]
Fedora10って10年前のかっ
su: must be run from a terminal
にならんのだったらsuでいいんじゃないの。パスワード流すのは exec ででも

953 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 00:44:01 ID:7OkeLCGH.net]
ディレクトリにwが付いてればファイルは消せるけどなあ

954 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 02:43:55 ID:T9lP8zyy.net]
>>936
パーミッションは変えない方針でいきたいですね
>>937
setuidという単語を初めて見たので、のちほど調べてみます。
>>939
su - <<EOF
password
EOF
は試しましたが、ttyを経由しろ的なメッセージで怒られました
調べたところttyなしを許可する設定がsudorsにあるらしいですが、sudoは設定したくないため、できなそうです

955 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 09:04:44.04 ID:xSNqVMSD.net]
>>941
# mkdir /dir
# chown userA:groupA /dir
# chmod 700 /dir
# cp /bin/rm /dir/rmB
# chown userB:groupB /dir/rmB
# chmod 6755 /dir/rmB

userA $ /dir/rmB /home/userB/file

956 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 10:51:03.29 ID:p4xpj08d.net]
こんな文字列野中に含まれる数字を
ゼロパディングしたいと思います

"何とかって講義 第5回 何とか特集.mp3"

まずは2桁でそろえてやりたいのですが

grep "第[1-9]回"

で一桁のものを引っ掛けて
前後をsedで除いて

sed "s/.*第//g
sed "s/回.*//g"

ゼロ埋めはprintfで実現しようと思うのですが

printf %02d $times

もっとシンプルな方法は無いでしょうか?

957 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 10:52:23.81 ID:p4xpj08d.net]
なお最終的な文字列の組み立てなおしは
数字の前後も抽出して3つを連結するつもりです

958 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 11:04:28.98 ID:+cbyszgy.net]
perl5 が使えるなら
echo "何とかって講義 第2345回 何とか特集.mp3" | perl -pe 's/第(\d+)回/ sprintf "第%06d回", $1/exm'
何とかって講義 第002345回 何とか特集.mp3

959 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 13:09:31.40 ID:QfoZv31s.net]
$ echo "何とかって講義 第2345回 何とか特集.mp3" | sed -E 's/第([0-9]+)回/第000000\1回/; s/0*([0-9]{6})/\1/'

6桁揃えにしたければ最初に6個0を足して次に6桁のみ残す

$ rename -n 's/\d+/sprintf("%06d",$&)/e' *.mp3

rename utilityが使えるならsprintfが使える



960 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:10:24.02 ID:W8s8s9Eh.net]
perlもrenameもPOSIX規格外

961 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:18:54.31 ID:AwOtA+WM.net]
みんな真偽値ってどうしてる?

962 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:21:29.60 ID:p4xpj08d.net]
>>945-946
ありがとうございます
perlは入っており期待通りに動作しました
perlの方が高機能なのですが
環境を移したときにperlがあるか保証できないため
sedでやろうと思います

963 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:23:02.88 ID:AwOtA+WM.net]
FLAG=true or false ?
FLAG=1 or 0 ?
FLAG=1 or unset ?
FLAG=1 or "" ?

それ以外?

964 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:26:37.95 ID:2f71vpaR.net]
alias FLAG true/alias FLAG false
if FLAG; then

965 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:27:08.55 ID:2f71vpaR.net]
でもBashだとファイル内では既定で使えない。

966 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:23:51.15 ID:CciDAIxr.net]
>>952
面白いけど、サブシェルの中で変えられないから

alias FLAG=true
(
alias FLAG=false
if FLAG; then
echo true
fi
)

出力
true

967 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 10:43:57.77 ID:oiOUCahJ.net]
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

FLAG=$TRUE or $FALSE

968 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 10:57:17.22 ID:jQcWWJt3.net]
サイトによってrenameの構文が違うけどコマンド自体が違うのな
perl付属のprenameとutil-linux付属のrename.ulがあるとか
alternativesで書き換えられてるんだからそら気付かんわ

969 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 17:48:17.61 ID:mthfJT/n.net]
>>953
知らんかった。恥ずかしいw



970 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 17:49:17.77 ID:mthfJT/n.net]
>>954
それってTRUE=0とするのと何が違うの?

971 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 18:07:25.18 ID:lp1ZwQII.net]
>>956
サブシェルは関係ない。俺もちゃんと仕様読んだわけじゃないけど、
aliasは実行時じゃなくて、1単位ごとに → パース → 実行 の
パース時に変換してる感じ

そして1単位というのは、

alias FLAG=true
alias FLAG=false; FLAG && echo true
↑これは一行で一単位、だからtrueと表示されてしまうし

関数とか、プロンプトから、func() { 改行 とかやると
} 改行 するまで、ずっと行頭に > って表示されるだろ?

あれが1単位。だから↓みたいなものもtrueって表示されてしまうんだよ

alias FLAG=true
func() {
alias FLAG=false
if FLAG; then
echo true
fi
}
func

972 名前:793 [2019/10/24(木) 18:35:35.72 ID:n545jbBX.net]
>>795-797
時間が経ってしまいましたが、ありがとうございました
"$()"の中の"はエスケープする必要があるのかどうか、とか、変数代入への挙動とか、そういう細かいところがよくわかってなかったです。

973 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 22:00:36.73 ID:mthfJT/n.net]
>>958
あー。
aliasってたしか一つの構文解析のかなり初期段階で展開される筈だから,
その一つの解析対象の内部で定義されているaliasは(当然)それ自身の解析結果には反映されんな。

このへんだろうか??
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10

974 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 00:11:27.02 ID:6btPTvif.net]
次スレ
シェルスクリプト総合 その32
https://mevius.5ch.net/test/read.cgi/tech/1571929725/

975 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 07:59:28.70 ID:6Bcci7V7.net]
>>957
真は0、偽は0以外という値を意識する必要が無い
(Cの真偽値は逆で紛らわしい)
true/falseコマンドが使えない環境でも使える

976 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:17:19.52 ID:TUsRGFSK.net]
>>962
true/falseがビルトインじゃないシェルは存在しない
また、[ の結果はtrueなら0、falseなら1と決まっている

977 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 06:21:32 ID:0I+FrAtF.net]
>>963
> true/falseがビルトインじゃないシェルは存在しない
今ならそう言えるだろうが、かつては存在した
外部コマンドのtrue/falseがその名残りだ

> また、[ の結果はtrueなら0、falseなら1と決まっている
0は数値の0であってtrueではない
trueを表現するのに0を使っているだけだ

まあ真偽値を扱うならtrue/falseを使えってことだな

978 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 09:53:59.01 ID:Q5pTtErv.net]
trueを表現するのに0を使っているというより、真偽に成功不成功をそのまま使ってるというだけだろ

979 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:32:17.69 ID:a0V3mxKP.net]
>>964
> 今ならそう言えるだろうが、かつては存在した
かつてとはいつで、どこの実装であるのか答えなさい

また、現存しない物の話をしても意味はない
そもそも [ が存在しない環境では使えない
外部コマンドの [ がその名残りだ



980 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:33:01.78 ID:swDBEFOl.net]
成功/不成功は終了ステータスであって真偽値ではない

981 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:37:22.98 ID:3fttRo5u.net]
え、まさか、
hoge && FLAG=$TRUE || FLAG=$FALSE
 :
 :
if [ "$FLAG" -eq "$TRUE" ] then ・・・
if [ "$FLAG" -eq "$FALSE" ] then ・・・

とか書くつもり・・・?

982 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:56:36.80 ID:0I+FrAtF.net]
>>968
終了ステータスを真偽値で判断するのか
珍しいやつだなw

983 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:14:58.17 ID:3fttRo5u.net]
>>969
変数に真偽値を入れるって話で
終了ステータスを入れる馬鹿を皮肉ってるだけだろw

984 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:16:54.58 ID:Q5pTtErv.net]
while true
do
や、
FLAG=true
or
FLAG=false
if $FLAG; then

真偽に成功不成功をそのままは、なんて書きたかっただけだろ、そうの方が見た目がいいしな
なんでそんなに拘っているんだか

985 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:21:27.44 ID:3fttRo5u.net]
つーか、いいかげんにしろよ。
真偽値の値を何にするかって話だろ
誰も真偽値をどうやって生成するかの話なんかしてねーよ

986 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:22:36.82 ID:3fttRo5u.net]
いつものやつ言っとくわ

>>971
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

987 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:23:54.27 ID:Q5pTtErv.net]
FLAG=true or false
FLAG=1 or 0
etc
なんでも好きにすればいいだろ
true/falseコマンドを使った方が見た目簡潔じゃないかと思うがな、個人的に。使わんけど
お前がいいかげんにしろよw

988 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:29:02.54 ID:3fttRo5u.net]
質問が出てる時点で、意図がわからないコードってことなんだがw

957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954
それってTRUE=0とするのと何が違うの?


それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ

989 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:32:55.31 ID:Q5pTtErv.net]
俺は他alias使ったのやのその話題は、なにをわざわざ凝ったことしようとしてるのか意図不明で趣味なんだろなとしか思ってない



990 名前:デフォルトの名無しさん [2019/10/26(土) 11:33:38.63 ID:T/HAOzs9.net]
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…

991 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:34:25.41 ID:3fttRo5u.net]
>>976
趣味(実用的ではないネタコード)に、正当っぽい理由をつけるなって話だ

992 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:36:44.02 ID:Q5pTtErv.net]
ただの雑談だろ
あれを強制するなりしているわけでもないのに、なにをそう否定してんだか
そんなヤツがリアルで一緒に仕事するなら思いっきりくそ叩くがなw

993 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:37:51.16 ID:3fttRo5u.net]
あとC言語の世界しか知らんようだから言っておくと、rubyは0も1もtrueな
シェルスクリプトは反対で0がtrueで1がfalseなんだ、それ以外の回答はない!ってのは
ちょっと考えが浅いんじゃないですかねぇw

osishow3.hateblo.jp/entry/2017/04/20/235500
nil is false
false is false
0 is true
1 is true

994 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:39:18.03 ID:Q5pTtErv.net]
何をひとりで妄想に走っているんだか
だれか「いいかげんにしろ」とか言ってなかったか?w

995 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:42:23.29 ID:3fttRo5u.net]
俺に突っかかってきてないで、シェルスクリプトの話題をしたら?

996 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:43:40.40 ID:Q5pTtErv.net]
よくいうよw

997 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:47:29.21 ID:3fttRo5u.net]
そりゃいうだろ、いきなりシェルスクリプトと関係ない
「俺」の話を始めるんだからw

998 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:50:09.04 ID:Q5pTtErv.net]
言ったことに対してはそりゃ言うだろう。お前がわざわざ言ったんだから
そんなのが無くてもいいのに。お前だった元々のやつを「アホ」呼ばわりしてるじゃん

999 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 15:54:12.94 ID:0I+FrAtF.net]
>>975

set +e
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
set -e

動かんと言ってる方がアホだと思う



1000 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:04:47.31 ID:+M+pJ73c.net]
set -eで正しく動かない

set +eと書いて動くと主張。赤っ恥w

1001 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:15:33.38 ID:0I+FrAtF.net]
逃げ方がチョン臭くてキモい

1002 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:17:36.78 ID:+M+pJ73c.net]
しかも、最初の状態が set +e だったら
set -e に状態が変わってしまうというクソコード
汎用性がない

1003 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:20:27.41 ID:+M+pJ73c.net]
true / false を使えばいいのに、[ が入ってない環境を考慮せずに、
true / false が入ってないかもしれないから [ を使ったと言う無能ぶりw

1004 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:22:55.60 ID:0I+FrAtF.net]
最初にset -eするとルール化するだけ
いちゃもんつけるの得意だな

1005 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:24:16.70 ID:0I+FrAtF.net]
[]やtestが使えないシェル教えてくれよ

1006 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:25:06.04 ID:+M+pJ73c.net]
TRUEの反対だからfalseというが、
FALSEの反対もfalseになってると気づいてなくて
そもそもシェルスクリプトの仕様をわかってないw

[ 0 = 0 ]; echo $? # => 0
[ ! 0 ]; echo $? # => 1
[ ! 1 ]; echo $? # => 1

1007 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:27:23.30 ID:+M+pJ73c.net]
>>992
上の方で /bin/true, /bin/false コマンドがあるんだから
true, false が使えないシェルがあるはずだって主張していたぞw
その理屈で言えば [ コマンドもあるんだから、 [ が使えないシェルもあるってことになるんだがなw

1008 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:28:56.67 ID:+M+pJ73c.net]
更に言うなら

TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

これにサブシェルを使うのもアホらしいw

1009 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:29:21.39 ID:0I+FrAtF.net]
>>994
cshのbuiltin調べてこい
分かったらすいませんって言えよw



1010 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:29:57.11 ID:+M+pJ73c.net]
>>1みろ

 csh/tcshでのシェルスクリプトは*まったく推奨しません*。

1011 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:08.87 ID:0I+FrAtF.net]
あーいつものマウントとらないと死ぬ病気のやつか

おだいじに

1012 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:30.62 ID:+M+pJ73c.net]
>>1じゃなくて>>2だったな

> ・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)

1013 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:49.43 ID:+M+pJ73c.net]
>>998
マウント取られて可愛そうwww

1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 17時間 12分 59秒

1015 名前:1002 [Over 1000 Thread.net]
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログイン

1016 名前:はこちら ▼
https://login.5ch.net/login.php
[]
[ここ壊れてます]

1017 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef