シェルスクリプト総合 その30
レス数が900を超えています。1000を超えると表示できなくなるよ。
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/ >>818
うん。
だって>>685でbash 2.xの話をしてるということは
少なくともBashがそのバージョンであった時代くらいまでは考えるべきなんでしょ? OSXのデフォルトシェルがBash3だったはずと思ったら、最新のOSXだとZshになってるんだな
ま、LTSの古いOSとか、BSD系だとBash4じゃないのも結構あってまだ動いてると思う 実務だとプログラミングって才能とかよりどれだけ知識を蓄えてるかの方が重要だよね?
このスレに居る猛者はどうやって強くなったんすか 才能のないのはまず脱落する。
体力のないのもすぐ脱落する。
あとは下積みあるのみ。 シェルスクリプトの才能ってなに?
驕り高ぶらないこと?w
↑半分本気 シェルスクリプトって5行以内で使うルールで使ってるけど
引数をたくさん使いたいっていう有用なケースってある? >>829
その時代まで考えることと、poshが最新版でも
直ってないことは矛盾しないんだがw >>830
>>2にも書いてあるが、/bin/shの実体が何かわからん時代になったからな
> FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
> Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
> macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
> android ユーザーは /bin/sh の実体が mksh なので注意。
bashで動けば良いんでしょ?という時代は終わった。
POSIX準拠で書かないと多くの環境で動かない。 >>834
複数ファイルに対して同一の処理をする時。
例えば特定の文字コードに変換するとか。 クロスプラットフォーム必要なケースで、シェルスクリプトで作り込んだりしないよ
PerlかPythonか、Windowsも対応するならGoとか使う >>838
逆じゃね? 何かをシェルスクリプトで作ったとして
多くの環境で使うなら、多くの環境で動かんとだめでしょw >>841
例えば組み込み機器でPerlやPythonも入ってない、入れられないときはどうする?
シェルスクリプトはかろうじて使える(最初から入ってるから)
Goはバイナリがでかいから、空き容量も制限されてる組み込み機器には入れたくない
今はIoT時代ですよ(笑) >>843
シェルスクリプトってすごいんだな
そんな組み込みでも走るとは >>844
組み込みLinux用に作られたBusyBoxっていうのがあって、
一つのバイナリに様々な外部コマンド(catとかsedとかwcとか)が詰め込まれてる。
そのBusyboxにashも組み込まれてる。
ただし様々な外部コマンドが組み込まれてるといっても、POSIX完全準拠を
目指しているわけじゃなくて、容量節約のためあまり使われないオプションを実装していない。
それでもシェル(ash)はPOSIX準拠になってる。
BSDなどでもそうなんだが外部コマンドはオプションが違うことがある。
オプションの違いでLinuxで動いたものがMacで動かなかったりするが
シェルスクリプトで実装していればそういうこともない。 (Busyboxは組み込み用ではあるが、組み込みLinux用とは限らんかw) (´-`).。oO(IoT機器で文字列くっつけたりTSVファイルを混ぜたりしているのか… そりゃすることもあるだろw
IoTはモノのインターネットの略なんだから
インターネットにあるものと連携してるよ。
TSVやCSVだけじゃなくJSONやXMLやYAMLも扱いたい
(簡易なことならsedなどで対応できるが) やっぱりどこでも動くシェルスクリプトなんて幻想なんだね… (´-`).。oO(心の声に反応しないで欲しい…w >>849
POSIX準拠でシェルスクリプトで書けば可能だって言ってんだろw 今現在でも世界中で書かれているシェルスクリプトの一体何%がPOSIX準拠なのか。
ま、実質幻想だね。 (´-`).。oO(心は常に幻想を追い求める…原理主義者の業の深さよ… 具体性ゼロだな。単なる可能性想像上だけの話だな
多くは限られた環境しか使わんし、それで動けばいい、何か他で使うようなときに問題があったら考えようで十分だろな
使ってる環境(OS)にデフォで入っている汎用スクリプトもそのOSでしか動きませんというのもそんなもんだし 例えば、gitはいろんな環境で使うが、35.7%がシェルスクリプトである
https://github.com/git/git (´-`).。oO(いつからgitはPOSIXコマンドになったんだろう) 35.7%っていってるんだから、探すまでもなく他の使ってるってわかるだろw >>857
gitがPOSIXコマンドだって誰も言ってない 少なくとも git-filter-branch.sh は perl がインストールされていない環境では
動作しない…それに、シェルスクリプトの表現能力が(他の言語に比べて相
対的に)低いために全体の占める割合が高くなってしまっているという可能性
も否定できない。別段それが悪いわけではないが。 gitコマンドの話(しかも実装の話)を延々とされても困るわ shbang が全部 #!/usr/bin/env bash だな。個人的にはこの方がいいけどw (´-`).。oO(gitを使うシェルスクリプトはPOSIX準拠じゃないだろ) まさかと思ったが具体性のために git を出したのか。誰がそんなことを聞いているねん
ここにいるどんだけの人がそういう多くの人が使うのを書いているねん。今までのでもほとんど「私用」だろに gitを呼び出すシェルスクリプトの話は誰もしてない >>869
世界の話をするな。ここにいる人たちだけの話をしろ
俺たちの村の話だ。って言いたいわけ? 私用で限られた環境で動けばいいのならPOSIXにこだわる必要性はほぼゼロだな
そしてこのスレでの限られた人を除いては、あくまでも私用範囲といういたって普通の話だろう
だから、あなたがgitレベルの何を書いているのかね?そういう具体性。自分でそういうの書いていないのに? >>865
結局彼は何を言いたいのかな?わけわからんなw ワシもわけわからんw 具体例なら例の某POSIX原理主義者が書いた
ピュアシェルスクリプトの nkf 互換コマンドを出せばいいのに、って思う それが nkf を置き換えるぐらいメジャーだったら出してたのかも
所詮お遊び趣味可能性を示しただけという認識なのかも
よく知らんけどそのスクリプトがどれだけ使われているのか 例えばさ、リモートでHW情報(CPU,メモリ,ディスク...)を取得したいとするじゃん
プラットフォームも様々Linux, FreeBSD, mac...
これPOSIX準拠で書けるかって話
実装はsshでログインしてproc見てってやるじゃん
sshはPOSIXコマンドじゃないし
procはLinuxとBSD系で構成が違うから判断が必要
POSIXで担保できる可搬性には限界があるってことだ >>875
確かに処理速度が遅すぎて全然使い物にならんかったよ…
本人は「遅くてもいいのだ、POSIXシェルがあればどこでも
使えるんだから」って強弁してたけどw どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの?
そうじゃなきゃ彼の「世界中でPOSIX準拠のシェルスクリプトが動いてる!」って主張は
まったく支援されない,いや寧ろBashに依存したシェルスクリプトがrbenvという世界的な
プログラムで採用されてることによってその説は説得力を失なってるまである。
あ,「俺は『世界中でPOSIX準拠のシェルスクリプトが動いてる』なんて言ってない」なんて
くだらねー反論を先に封じておくと,
>>852に対して>>856を出した訳だから,
当然「シェルスクリプトの一体何%がPOSIX準拠なのか」に答えてる訳だからねぇ。 >>874
> ピュアシェルスクリプトの nkf 互換コマンドを出せばいいのに、って思う
しらんけど、どうせ大部分がawk実装で、
シェルスクリプトで実装してないんだろ? >>879
> どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの?
話ずれまくりw いろんな環境で動くことが重要って話だろ >>880
いや、POSIXシェルの機能だけを使ってる。可搬性は高いが遅い。 >>883
思いつかない人のために、gitやrbenvという具体例をだしました。 >>882
それがどこにあるのかしらんが、iconvがPOSIXなのでどうでもいいかなw
nkfなんて所詮日本語にしか対応してないし 意味わからん逃げだな
そんなに多くの人が使ってるようなの書いていたら言えるだろうに。具体的に >>886
もしかして俺が誰か特定したかったのか? なにを言っているのか意味わからん
いろんな環境で動くがほぼ絶対なんだろう?そのいろんな環境で動くなにを書いているんだよという素朴な疑問
多くはいろんな環境で動くのを想定してなんていなく、自分の使う環境でしかとしか思わないからな >>888
> そのいろんな環境で動くなにを書いているんだよ
俺の個人的な便利ツール 便利ツールは、俺が興味がある環境すべてで使う。
LinuxやBSDやmacOSや組み込み環境
Unixも興味あるがSorarisとMac以外は個人で使うのが難しいので残念 だったら、いろんな環境で動くがほぼ絶対はあんただけのことだな >>891
俺が和洋中すべての料理を食べるって言ったら、
これらの料理を食べるのは、俺だけってことになるんか? 問.今現在でも世界中で書かれているシェルスクリプトの一体何%がPOSIX準拠なのか
池沼の答え1.gitは35.7%がシェルスクリプトである。俺は問に答えた!
池沼の答え2.rbenvはShellが96.5%。これが具体例だ!
ぼく「・・・」 >>892
また意味わからんことを言い出す
いろんな環境で動くがほぼ絶対と聞いたら俺の個人的な便利ツールってんんだもん、そんなの「あなたの[限られた]環境」の話だろう
結局自分の趣味の話だけじゃないの(なにその>>890のもろ趣味ですは)
それを根拠に他人に押し付ける、他人のを否定するんじゃないよ >>895
お前、他の人が「個人的な便利ツール」を持ってないとでも思ってんのか?
なんで、俺一人から情報もらったら、
世界全部のことを知ったつもりになるのさw >>894
あのー?その問いに答えたつもりはないんですが?
>>855が「具体性ゼロだな。多くは限られた環境しか使わんし、それで動けばいい」っていうから
具体的に、いろんな環境で動かすツールを出したんですが? >>896
意味わからん。なに言っているの?
特定な環境で動く個人的ツールの方が腐るほどあるだろうなんて理解できないの?個人的ツールだろ?意味わかって個人的ツールって使ってるの? >>898
だから、俺の個人ツールの話を聞いただけで、
POSIX準拠が必要なのは、世界中で俺だけだって判断してるのが
意味不明だって言ってるんだがw 根本的に何も理解できないのな
マルチプラットフォームを意識するスクリプトも当然あるし、そうじゃない特定の環境で動けばいいスクリプトも当然ある
あんたは前者ひとつと言うからおかしい。具体的にって聞いたら個人的ツールってことなので、全然いろんな環境で動くがほぼ絶対ではないってことだよ
というか逆に特定の環境で動けばいいの方が多数を占めているのが現実だろう。なぜかは自分で>>890で言っているようなもん
POSIX大好きいろんな環境で動くスクリプト書くのが好きってだけだな >>900
あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが?
お前の思い込みだろ。俺がそう言ってるって。
俺は
POSIX準拠であれば、多くの環境で動く(事実)
俺が使ってる個人ツールは、多くの環境で動かしたい(事実)
俺の個人ツール以外でも、gitに含まれてるスクリプトやrbenvなど多くの環境で動かしたいものはある(事実)
としか言ってないの 他にも俺が言ったことには、
外部コマンドはオプションが異なることがあるので、シェルスクリプトで実装すると、
その違いに振り回されなくてすむ
というのがあります。 >>830に対して>>837なんて言い出す、それも自分ではPOSIXでの人だからそうとられても仕方がないと思うけど
(>>830はbashとzshの違いだし、デフォルトシェルが変わるだけでbashにすればだけで済む話でもあって)
まあ、言う通りなら俺の読み違いってことだな、まあ、すまんかった...腑に落ちないがw POSIXで書く書かないは好きにしろってことなら、すまんかった だいたいPOSIXに従ってないシェルもあるんだから
POSIXで書いたからといってどこでも動くわけじゃないし。
なんというか,ベンダ依存を嫌うあまりPOSIXに「依存」してしまってる感がある。 ここってPOSIXシェル以外の話題もおkなんだよな
なのに、それはbash依存とか外部コマンド使ったら遅いとか押しつけがましいやつがウザいんだよ
そんなもん好きに書かせろやって感じだわ > 最新のOSXだとZshになってるんだな
という話に続いて、他のOSではいろんなシェルが使われてるという話をすることに
なんの問題があるのかわからんが?
bashをインストールするのが大変な環境もあるんだし
POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
逆にオプションの違いで動かんことに対応する方が手間なんだよ。
上の方でも出てたけど、sort -Vで動くウェーイってやってたらmacOSで動かんのだろ?
(ぐぐって確かに動かんというような記事ばかりだが、最新のmacOSだと対応してる気もするw) 結局POSIXで書けって言ってるだろうに。ふらふらしてんなあ >>904
> だいたいPOSIXに従ってないシェルもあるんだから
> POSIXで書いたからといってどこでも動くわけじゃないし。
もっといい案があれば採用するが?
条件後出しするなって言われそうだから条件
組み込み機器など含めてソフトウェアを追加するのが困難なシステムでも動く
コンパイルはもとより、クロスコンパイル環境も不要
この条件でできるだけ多くの環境で同じように動く >>908
どこをどう読めば、お前は命令されてるように感じるんだ?w >POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
誰に向けて書いているの? 補足
> この条件でできるだけ多くの環境で同じように動く
これは多くの"種類"の環境っていみな
世の中Windowsばかりだろという反論は筋違い >>911
する必要もないのに、bashに依存してる人 それがだろうが。自分で何を書いているのかわかららないの? 別にbashに依存してもいいだろう?それでそのスクリプトの実行に問題がなければ
>俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってない
と相入れないね 唐揚げにレモンをかけると美味しくなりますよって言ったら、
「俺にレモンをかけろと命令したな!ムキー」って怒るような
話が通じない人が多いw わからんけど、複数が「?」と思ってるのだよ。よく考えような >>919
bashに依存してもいいだろ。というと
POSIXのすることのメリットは矛盾しないからねw
「bashに依存してもいいだろ」はお前の主観で、
POSIX準拠で作ることのメリットは客観的なもの
客観的事実に、主観で反論しないでください >>924
「POSIX好き」は主観
そのPOSIX好きの俺が述べてるPOSIX準拠のメリットは客観 あと11レスで今日一日でこのスレの1/10を俺が占拠したことになる。
お前ら、レス頑張れ! 結局何を言いたいの?POSIXで書け、できるだけそう書けと言いたいの? >>927
POSIX準拠で書けば、メリットがあるので、
POSIX準拠で書く話をしましょう。
ネタがなければ、私が時々問題を出しますよ
興味がない人は見なくていいです。
レスもしなくていいです。 レス数が900を超えています。1000を超えると表示できなくなるよ。