シェルスクリプト総合 その37
■ このスレッドは過去ログ倉庫に格納されています
シェルスクリプトに関する総合スレッドです。 全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 ・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。 ・「POSIX原理主義」「ユニケージ」「USP研究所」はPOSIXとUnixを曲解し 間違ったシェルスクリプトを広めている宗教です。洗脳されないようにしてください。 前スレ: シェルスクリプト総合 その36 https://mevius.5ch.net/test/read.cgi/tech/1614212414/ 関連スレ ・【Bash】Windows Subsystem for Linux【WSL】11 https://mao.5ch.net/test/read.cgi/linux/1627507889/ ・Bashでプログラミング [転載禁止](c)2ch.net https://mao.5ch.net/test/read.cgi/linux/1443885102/ ・シェルスクリプト総合 その28 https://mevius.5ch.net/test/read.cgi/unix/1533154936/ ・zsh その7 https://mevius.5ch.net/test/read.cgi/unix/1337844883/ ・過去UNIXで使われていた ksh というシェルについて https://mevius.5ch.net/test/read.cgi/unix/1582358403/ ・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net https://mevius.5ch.net/test/read.cgi/unix/1443103705/ ・おまえら! shell は何を使っているんですか? https://mevius.5ch.net/test/read.cgi/unix/1012330865/ >>99 言うなら 次世代シェルスクリプト だな。もちろん未だにそんなのない if command; の話をしてるんだから、関係ないよ この形式は後も残るし、その拡張とは別の話をしてるんだし 結局、lD:h64P2lE5人の発言にただケチをつけて大物ぶりたがるだけの ネットチンピラだった、ということでいいよな?w じゃあ (( 0 )) は禁止でいいよ。代わりに [ 0 ] 使うからな if [ 0 ]; then echo 真; else echo 偽; fi 真 if [ 1 ]; then echo 真; else echo 偽; fi 真 if [ 2 ]; then echo 真; else echo 偽; fi 真 if [ -1 ]; then echo 真; else echo 偽; fi 真 あれれー?全部真じゃねーか。 どう説明してくれるのかな? >>102 「ケチをつけて」だってww 「大物ぶりたがる」だってwwwww お前の勝手な受け取りでしかないな もう、本当に、お前はwwwwwww やっぱりもっと上の称号を上げたいとは思ってしまう >>104 だって、お前、結局、一つも俺の発言の間違いを 指摘できなかったじゃんw それは客観的な事実でしょw >>103 testコマンドの結果(testコマンドが終わるときのExit Statusの値)でしかない testコマンドに何故なのか書いてあるだろう シェルスクリプトの話ではない=シェルはそれに関係してないよ >>105 さすがwwwwすげえええwwww まだそんなこと「言い張る」のなww 客観的な事実wwwwwwwww すげえなあ、本当に、マジでマジで >>107 なに、とうとう宗旨替え?w こっそりと紛れようと?w ま、なんつーか、もうすこし謙虚さをみにつけなさい。 そうしたら、コンピュータやプログラミング言語も理解 できるようになるよw >>103 ,107 string True if string is not the null string. これだな >あれれー?全部真じゃねーか。 >どう説明してくれるのかな? わかったならもう出る必要ないぞ >>106 やりなおしじゃねーよ。 重要なことだろ お前が言ってる真とか偽の話は、testコマンドの話であって シェルスクリプトと関係ねーんだよ if [ 0 ]; then echo 真; else echo 偽; fi 真 if [ 1 ]; then echo 真; else echo 偽; fi 真 両方が真になる理由を言ってみろ testコマンドの仕様じゃねーか >>109 またイミフなことを言い出すwww 妄想しすぎだぞw >>110 それはシェルスクリプトじゃなくて testコマンドの仕様です 一方こっちはPOSIXシェルじゃないってだけで シェルスクリプト仕様なんだわ if (( 0 )); then echo 真; else echo 偽; fi 偽 if (( 1 )); then echo 真; else echo 偽; fi 真 ((コマンドなんてないからな >>111 シェルスクリプトの仕様の話であって、 testコマンドの仕様の話じゃないよ。 そんなこともわかんねーの? つまんないやつ。 じゃあ、もういいから出てくんなよ。 >>111 お前もどうだかと思うがw、ヤツはもっとだぞ どうすんの?やめといたほうがいいと思うぞw testコマンドじゃなくexprコマンドを使えば この通り0が偽で1が真になる $ if expr 0; then echo 真; else echo 偽; fi 0 偽 $ if expr 1; then echo 真; else echo 偽; fi 1 真 シェルスクリプトと同じ結果 if (( 0 )); then echo 真; else echo 偽; fi 偽 if (( 1 )); then echo 真; else echo 偽; fi 真 >>113 やっぱりお前もだなあ、>>107 と言ってるのに、そのレスは無いな >>114 とかID:FcrICImtとその思考/レス態度が似すぎw >>117 >>107 のtestをexprに置き換えておしまいw >>118 無礼だなあw 態度と思考はお前が最悪だろうにw 謙虚に、と言っただろ?w そういうことやってるとまた間違えて恥を晒すことになるぞ?w >>120 >>106 とか新人wに返してるくせに よく言うよw本当にお前ってやつはwwww >>119 何がいいたいのか知らんが、testは0も1も真、空文字は偽 >>122 test の 0 も 1 も文字でしかないからな、そういう「testコマンド[の]」 exprもtestを置き換えれば同じ話 >>123 ほら、言ったそばからこれだよ… 謙虚に、っていったろ? exprの終了コードは特殊なんだよ。 わからないことはわからないとまず認めること。 テキトーこいてごまかそうなんて一番ダメだ。 >>125 「特殊」=「exprコマンド[の]」 本当にお前は読めないやつだな 何が「謙虚に」だよ、お前こそ謙虚に読みやがれよw >>126 まちがったことにすらも気付いてないのかw もうつける薬もないなw >>127 お前こそお前が言った「ケチつけて」でばっかというのが気づかないんだなあ >>11 ,12をちゃんと謙虚に読めよw その流れのうちの話でしかないからな それも読まない/読めないくてだからなあ、言っても「全く」わからないんだろうけど >>124 見る価値はないぞ 俺共々アポーンでどうぞw >>128 だからちゃんと自分のレスを読み返してねw 間違ってるぞw testとexprの終了コードは同じじゃないぞw もう面倒だから、これ以上の指摘もしないけど。 つか、このスレこんな自称「プロ」みたいのが常駐してんの?w うへぇw >>130 ...すんげー読めなさぶりを発揮してくれちゃってもうwwwww 本当にお前はwww 誰も評価が同じとは言ってない。そこかよwww exprだろうがtestだろうがコマンド[の](独自とか独特とか何でもいいけどそんなん)でしかないと読めると思ったんだがなあ [の]の後に何が続くかも読めないのか...何が続くと思ったのだろう?いや続くとは思わなかったのか??不思議だなあ ( 日本語日本語とお前は言ってるが、日本語小説読めないぞそんなんじゃ。読まない読めないのか?) >>131 うん、少しわかったw君は日本語が書けないんだね?w 日本語ができないのかwまずそこから勉強しようねw >>132 お前にもわかるような教科書や参考書のような日本語は面倒で書くわけがないわな お前が望んでるのはそんなのだなw >>133 なるほどね。 だから、俺の書いてあることがよくわからなくて、 いちゃもんつけて絡んできたわけか。 最低だな。まさにネットチンピラだねw >>134 wwwwww 何で「だから〜」になるやねんwwwww さすがだなあ お前が読めない読まないくせに。俺だけじゃないらしいぞお前のそういう評価はw それを踏まえての>>133 なんだが、何故その理解になるんだか、七不思議 まあ、それもお前は自分の言ってることが正しいとお前だけ言い張るからだろうけど >>134 華麗にスルーされたけどさ、 前スレ>>989 なんて言ってるけど、確かにWindows APIはBooleanで返すのが多い だがそれはWindows APIの文化でしかない、シェルスクリプトの本家wであるUnixで何か書いたことがあるなら文化が違うとわかりそうなもんだが、なぜかWindows APIのが全てと言ってそうな前スレ>>989 WSLからのにわかか? って、合ってる?w あと、宮城県に住んでいたりする?w 日付も変わるし、>>11 ,12以降何も意味あることないからw(互いになww)、もう締めようかと で、>>12 での俺の疑問と、後はなんかソレっぽい(まあ、無いと思うけど)確認したいんだけどw とうとう変なゲスの勘繰りまで始めた…w いや、読めんよ、これはw本当にw もしかして、頭がおかしいのだろうかね… >>137 「ゲスの勘ぐり」wwww 散々してる、お前が言うなーーーーーーーwwwww すげえなあ ちゃんと理由書いてるからな、最初のは 後のは特定w有名人に似すすぎてな、その自己完結して他の人の指摘を聞き入れない頑固さ自己防衛意識wだけなのは え?俺がゲスの勘繰り? 一体なんのことだよw 完全に狂人だなw さすがにID:h64P2lE5みたいなのと会話するのはちょっと神ならぬ我が身では無理、 だな。 犬に噛まれたと思って諦めるよ >>139 すげえよww(マジ似すぎwwww) 俺に対して「こうじゃないか」とお前は散々言っているんだがな、根拠全くなく(=外れてるから) いや、お前のは「こうだ」と決めつけてるけどな。俺はお伺いしてるんだから謙虚wwだろう?w >>140 だから、その独善っぷりがなあ、似すぎなんだよwww YESかNOで済む話なのに、何で答えるのに拘るのか 別にNOでもそれ以上突っ込むことは無いのに まあ、なんかわけわからんプライドからだったりするんだろうな NOすら貰えなくて残念だったわ じゃあ、また会おうw >>135 > 俺だけじゃないらしいぞお前のそういう評価はw なにいうてんねん、イキりをイジりはじめたんはワイのが先やろ?w 前スレ>>984 もワイやし、前スレ>>897 からの付き合いや! て、あれ? もう終わったん? >>144 >なにいうてんねん、イキりをイジりはじめたんはワイのが先やろ?w w 先かもしれないなあ、いや先だろな 別に俺が言い始めたとは言ってないから勘弁してくれw >前スレ>>984 もワイやし あ...>>989 の間違いだった(趣旨がトンチンカンの>>982 のに「まあ、これなんだよね(笑)」と同意してる) 誠にすまんことです 繰り返したぶん、 ID:FcrICImt にもすまん >>145 なんか居たなw 赤の他人が悪絡みwのネタになるとでも思ってだろうとスルー >>147 ,144 >あ...>>989 の間違いだった(趣旨がトンチンカンの>>982 のに「まあ、これなんだよね(笑)」と同意してる) >誠にすまんことです >繰り返したぶん、 ID:FcrICImt にもすまん あ...>>12 ,136 で間違ってるのかと思った。間違ってないな、勘違いだった、どうかここは無かったことに >前スレ>>984 もワイやし あくまでも「なにいうてんねん、イキりをイジりはじめたんはワイのが先やろ?w」の拘りかっw勘弁してくれ、そのノリは一瞥にはわからんw レスバ乙。 最後に俺がまとめてやんよ。 終了ステータス0を真と見なすのはifコマンドの仕様です。 これでスッキリするな。 >>150 while until && || も まだやってたのか >シェルスクリプトだけじゃなくてC言語も成功は0を返さないとだめだって言ってんだろ 仕様書嫁 >>10 判ってる人間は「負論理」で済むはずなんだよな 結局「仕様書嫁」としか言い様が無い 1が真でも 0が真でも どっちでも良いんだよ >>12 Windows API は Boolean を返す関数が 0/1 以外に負の数を返したり普通にあるからな どっちもどっち ここまでコミュ力低いやつらはリアルで見たことないわ 運がいいのかこいつらがよほど特殊なのか >>150 それやと、また真偽バカを召喚しちゃうやろ!w if節の終了ステータスが0のときにthen節を、そうでないときにelse節を実行する、と実際の挙動のみをいえばよい。 >>154 正論理負論理は、2値の場合に使う考えかた。 整数についてはふつう言わない。 知ってる理屈をほかにムリヤリ適用すな! >>156 そういうのは初期の残念APIだから。。。 許してやろうや。。。 >>159 FORTRANの時代から算術IFというのがあった 分岐節が3つあって負、0、正の場合分け >>160 残念じゃなくてadhocなtype liftingなだけだ Cのポインタ返す関数がNULL返すのと同じ考え方 >>161 知らんがな。関係あらへん。w まあ、分岐の話をするんなら、CPUからやな。 ゼロフラグとキャリーフラグで3分岐できるもんやし。 >>162 理解力ないんか。。。 中盤以降は、そういうAPIはないやろ。 タイプセーフも強まっていったから、昔の挙げ足はええやろ、というとるんや。 >>165 すでに終わってるのに無理に絡むおまえのがキモいぞ シェルスクリプト使いにとってキモいは褒め言葉。 つか何でposixに終了ステータス0はtrue、1はfalseって書いてあんのに揉めてるの? >>167 どこに書いてあるかを言わないからだろ お前が揉める原因なんだよ いい加減嘘ついてあらすのはやめろ 127 や 126、1 から 125 にとは書いてるから >>167 は明らかに嘘だな >>168 終了ステータスは、 trueは0、falseは1は正しいが 0はtrue、1はfalseは正しくない というのがわからない残念な人なんだろう このようにどこに書いてあるのかを言えという 当たり前の質問にも答えられないわけですよ(笑) >>171 えと、本気で理解できないんだが詳しく教えてもらえないでしょうか。 >>173 その本のどこに書いてあるかを聞いてるんだが 理解してないの? いや、>>171 はたしかにおかしいな。w 反対や。 0はtrue、1はfalse(と評価されること)は正しいが、 trueは0、falseは1(の値をあらわすこと)は正しくない。 >>175 どこにってのは、どの項目かよく見ろと暗に示してるのかな? sh https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/sh.html EXIT STATUS The following exit values shall be returned: 0 The script to be executed consisted solely of zero or more blank lines or comments, or both. 1-125 A non-interactive shell detected an error other than command_file not found or executable, including but not limited to syntax, redirection, or variable assignment errors. 126 A specified command_file could not be executed due to an [ENOEXEC] error (see Command Search and Execution, item 2). 127 A specified command_file could not be found by a non-interactive shell. test https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/test.html EXIT STATUS The following exit values shall be returned: 0 expression evaluated to true. 1 expression evaluated to false or expression was missing. >1 An error occurred. >>177 理解しました。 >>178 testコマンドの部分は 引数で渡された式が真ならtestコマンドは0を返す(以下略 と書いてあるだけじゃん 真というのはtestコマンドのテスト式内の話 >>171 >trueは0、falseは1は正しい >0はtrue、1はfalseは正しくない ここだけ読むとイミフ >>171 >>177 どちらも可笑しい 仕様書に描いてあることが正しいのであって おまえの意見はどうでもいい >>177 ture/false コマンドに(Exit Status) 0 および1を返すと書いてある testコマンドに評価としてtrueとは書いてあるが、それは評価としてでその値が1なのか0なのかというのではないという理解だけど POSIXに書いてあるという話なら ぱっと流れを見てきただけだが、 []/test コマンドの評価が真で0を返すってところからはじまって、 他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの? これをもって終了ステータス0が真を意味するってわけじゃないよねぇ 日本語と英語で、否定文に対する同意にyes/noが反対になるのと似てると思う 前者は否定文それ自体、後者は事象全体について、それぞれ評価してるよね >>177 trueコマンドのExit Statusは0、falseコマンドのExit Statusは1 評価した結果trueならExit Statusは0、falseならExit Statusは1 てことででの、trueは0、falseは1 (のExit Status) になるでしょ?? testコマンド(など)で書いてるtrueは一般的な文上でのtrue(例えばtest条件に一致する=真)と読んでるけどなあ って、よく読んだら同じこと言ってるのか。シェル内部(?)の部分の話かそれ>>177 は Exit Status が 0だったらtrue、1だったらfalse と評価されることは正しいが (ここはわかる) trueは0、falseは1(の値をあらわすこと)は正しくない (言いたいことはなんとなくわかるしだったら否定はしないが、うーむ) >>171 は、 >終了ステータスは、 から始まってるとおり(上にも書いたけど)、 trueは0、falseは1は正しいが (そういうExit Statusになる) だからといって、 シェルスクリプト上で 0はtrue、1はfalse(と見なすのは)正しくない てこと。下は「trueは0、falseは1(の値をあらわすこと)は正しくない」と同じ意味だわな >>183 >[]/test コマンドの評価が真で0を返すってところからはじまって、 >他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの? Unixで動くプログラムはExit Statusが問題なければ 0、問題あればそれ以外というとこからはじまってかな。testコマンドもそれに合わせてのような Unixを作る上でのOSのUnixとしてのExit Statusとはどういうものかというのは最も先に考えるだろうから、そこからはじまってかな いまでも 0〜255 なんですか 256 以上とか 0 未満とか ありえないんですか? 8ビットいっぱいでの値(=unsigned char)となってるね、POSIXでは int main( ... ) だから、失敗なんぞで -1 をreturn できる(エラーにはならない)が、255になったりするねえ ん?まさか、trueコマンドとfalseコマンドを 真偽値のtrue/falseのことだって勘違いしてる? いやそんなアホはいないよねw 終了ステータスは数値であって true/falseじゃないよ はっきりした ただの独りよがり、マウントだけは取りたがり まあわかったようなのでいいけど >>183 終了ステータスは昔から0が正常終了、それ以外が異常終了という意味 シェルスクリプトのifは正常終了の場合にthenの中身を実行する それだけの話なのに真とか偽とか、trueとかfalseとか 言ってるやつがいるだけ trueコマンドは正常終了を返す fasleコマンドは異常終了を返す ifは正常終了か異常終了かで処理を分岐させるもので 真か偽かで処理を分岐させるものではない なにか必死感 >>175 なんて平気で偉そうに自分で調べる探すことはできないくせに まあこれ以上イジルのは止めようw 誰とは言わんがw某君は自分で調べることも探すこともできないは明らかだが、 そこからくる無知がコンプレックスからなんだろうなその常時上から目線すぐに誤魔化す癖なのは と思われるw >>190 例えばカーニハン、ロブパイク共著のTHE UNIX PROGRAMMING ENVIRONMENT のp140のif構文の説明には if command then commands if condition true else command if condition false do と書かれている。P145のwhile untilの説明にもtrueとfalseが使われている。 あなたの言いたい事は分かる、というかみんなわかってる。ただ、昔からの習慣をぶった切って何が得なのか分からない。 「条件が真」というのは真偽値とは別の話だよ 条件とセットになってないといけない 何が真かどうかは条件文つまりコマンドによって変わる 値だけをみて真かどうかなんてわからない 例えばexprという条件文は、1(0以外)が真で、0が偽 testという条件文は、文字列の長さがあれば真で、空文字なら偽 だからtestの場合は0も1も真だし、testの演算子を使えば、それに応じて結果も変わる どの値が真か偽かなんてわからない 少なくともexprでは0は偽 >>195-196 つまりスクリプトの文脈や使うコマンドに依存するって事ですよね。それは誰でも知っている。 全てに共通では無いからと言ってif文の話の時ですらtrue falseと言う言い方、表現を認めないと言うのはそれこそ文脈無視。何でそこまでtrue falseを否定するの? >>190 で完全におわってるんだけど何が不満なんだよw >>197 お前がレスしてくるから、返してるだけやで 何が不満なんだよ? 俺も聞きたいわw >ifは正常終了か異常終了かで処理を分岐させるもので >真か偽かで処理を分岐させるものではない そこが普通のプログラミング言語と違うから 混乱することあるよねって話だったんじゃ? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる