[過去ログ] シェルスクリプト総合 その30 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: 2019/07/01(月)23:04 ID:/rKj5XUf(1/3) AAS
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その29
2chスレ:tech
876: 2019/08/10(土)20:40 ID:x0rFB4wI(13/15) AAS
例えばさ、リモートでHW情報(CPU,メモリ,ディスク...)を取得したいとするじゃん
プラットフォームも様々Linux, FreeBSD, mac...
これPOSIX準拠で書けるかって話
実装はsshでログインしてproc見てってやるじゃん
sshはPOSIXコマンドじゃないし
procはLinuxとBSD系で構成が違うから判断が必要
POSIXで担保できる可搬性には限界があるってことだ
877: 2019/08/10(土)20:44 ID:6d2gRK68(15/19) AAS
>>875
確かに処理速度が遅すぎて全然使い物にならんかったよ…
本人は「遅くてもいいのだ、POSIXシェルがあればどこでも
使えるんだから」って強弁してたけどw
878: 2019/08/10(土)20:45 ID:N6maMe0S(5/6) AAS
w
(そんなオチかよw)
879(1): 2019/08/10(土)20:49 ID:lTTXvTcQ(23/25) AAS
どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの?
そうじゃなきゃ彼の「世界中でPOSIX準拠のシェルスクリプトが動いてる!」って主張は
まったく支援されない,いや寧ろBashに依存したシェルスクリプトがrbenvという世界的な
プログラムで採用されてることによってその説は説得力を失なってるまである。
あ,「俺は『世界中でPOSIX準拠のシェルスクリプトが動いてる』なんて言ってない」なんて
くだらねー反論を先に封じておくと,
>>852に対して>>856を出した訳だから,
当然「シェルスクリプトの一体何%がPOSIX準拠なのか」に答えてる訳だからねぇ。
880(1): 2019/08/10(土)21:19 ID:L+B8OP2P(65/104) AAS
>>874
> ピュアシェルスクリプトの nkf 互換コマンドを出せばいいのに、って思う
しらんけど、どうせ大部分がawk実装で、
シェルスクリプトで実装してないんだろ?
881: 2019/08/10(土)21:19 ID:L+B8OP2P(66/104) AAS
>>879
> どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの?
話ずれまくりw いろんな環境で動くことが重要って話だろ
882(1): 2019/08/10(土)21:23 ID:6d2gRK68(16/19) AAS
>>880
いや、POSIXシェルの機能だけを使ってる。可搬性は高いが遅い。
883(1): 2019/08/10(土)21:31 ID:N6maMe0S(6/6) AAS
いろんな環境で動くなにを書いているのだか...w
884: 2019/08/10(土)21:33 ID:L+B8OP2P(67/104) AAS
>>883
思いつかない人のために、gitやrbenvという具体例をだしました。
885: 2019/08/10(土)21:35 ID:L+B8OP2P(68/104) AAS
>>882
それがどこにあるのかしらんが、iconvがPOSIXなのでどうでもいいかなw
nkfなんて所詮日本語にしか対応してないし
886(1): 2019/08/10(土)21:35 ID:eyby+BxV(1/7) AAS
意味わからん逃げだな
そんなに多くの人が使ってるようなの書いていたら言えるだろうに。具体的に
887: 2019/08/10(土)21:39 ID:L+B8OP2P(69/104) AAS
>>886
もしかして俺が誰か特定したかったのか?
888(1): 2019/08/10(土)21:41 ID:eyby+BxV(2/7) AAS
なにを言っているのか意味わからん
いろんな環境で動くがほぼ絶対なんだろう?そのいろんな環境で動くなにを書いているんだよという素朴な疑問
多くはいろんな環境で動くのを想定してなんていなく、自分の使う環境でしかとしか思わないからな
889: 2019/08/10(土)21:50 ID:L+B8OP2P(70/104) AAS
>>888
> そのいろんな環境で動くなにを書いているんだよ
俺の個人的な便利ツール
890(2): 2019/08/10(土)21:52 ID:L+B8OP2P(71/104) AAS
便利ツールは、俺が興味がある環境すべてで使う。
LinuxやBSDやmacOSや組み込み環境
Unixも興味あるがSorarisとMac以外は個人で使うのが難しいので残念
891(1): 2019/08/10(土)21:52 ID:eyby+BxV(3/7) AAS
だったら、いろんな環境で動くがほぼ絶対はあんただけのことだな
892(1): 2019/08/10(土)21:55 ID:L+B8OP2P(72/104) AAS
>>891
俺が和洋中すべての料理を食べるって言ったら、
これらの料理を食べるのは、俺だけってことになるんか?
893: 2019/08/10(土)21:56 ID:lTTXvTcQ(24/25) AAS
被害妄想やばない?
894(1): 2019/08/10(土)21:58 ID:SA5rOGgq(2/2) AAS
問.今現在でも世界中で書かれているシェルスクリプトの一体何%がPOSIX準拠なのか
池沼の答え1.gitは35.7%がシェルスクリプトである。俺は問に答えた!
池沼の答え2.rbenvはShellが96.5%。これが具体例だ!
ぼく「・・・」
895(1): 2019/08/10(土)21:59 ID:eyby+BxV(4/7) AAS
>>892
また意味わからんことを言い出す
いろんな環境で動くがほぼ絶対と聞いたら俺の個人的な便利ツールってんんだもん、そんなの「あなたの[限られた]環境」の話だろう
結局自分の趣味の話だけじゃないの(なにその>>890のもろ趣味ですは)
それを根拠に他人に押し付ける、他人のを否定するんじゃないよ
896(1): 2019/08/10(土)22:01 ID:L+B8OP2P(73/104) AAS
>>895
お前、他の人が「個人的な便利ツール」を持ってないとでも思ってんのか?
なんで、俺一人から情報もらったら、
世界全部のことを知ったつもりになるのさw
897: 2019/08/10(土)22:03 ID:L+B8OP2P(74/104) AAS
>>894
あのー?その問いに答えたつもりはないんですが?
>>855が「具体性ゼロだな。多くは限られた環境しか使わんし、それで動けばいい」っていうから
具体的に、いろんな環境で動かすツールを出したんですが?
898(1): 2019/08/10(土)22:04 ID:eyby+BxV(5/7) AAS
>>896
意味わからん。なに言っているの?
特定な環境で動く個人的ツールの方が腐るほどあるだろうなんて理解できないの?個人的ツールだろ?意味わかって個人的ツールって使ってるの?
899: 2019/08/10(土)22:12 ID:L+B8OP2P(75/104) AAS
>>898
だから、俺の個人ツールの話を聞いただけで、
POSIX準拠が必要なのは、世界中で俺だけだって判断してるのが
意味不明だって言ってるんだがw
900(1): 2019/08/10(土)22:18 ID:eyby+BxV(6/7) AAS
根本的に何も理解できないのな
マルチプラットフォームを意識するスクリプトも当然あるし、そうじゃない特定の環境で動けばいいスクリプトも当然ある
あんたは前者ひとつと言うからおかしい。具体的にって聞いたら個人的ツールってことなので、全然いろんな環境で動くがほぼ絶対ではないってことだよ
というか逆に特定の環境で動けばいいの方が多数を占めているのが現実だろう。なぜかは自分で>>890で言っているようなもん
POSIX大好きいろんな環境で動くスクリプト書くのが好きってだけだな
901(1): 2019/08/10(土)22:24 ID:L+B8OP2P(76/104) AAS
>>900
あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが?
お前の思い込みだろ。俺がそう言ってるって。
俺は
POSIX準拠であれば、多くの環境で動く(事実)
俺が使ってる個人ツールは、多くの環境で動かしたい(事実)
俺の個人ツール以外でも、gitに含まれてるスクリプトやrbenvなど多くの環境で動かしたいものはある(事実)
としか言ってないの
902: 2019/08/10(土)22:27 ID:L+B8OP2P(77/104) AAS
他にも俺が言ったことには、
外部コマンドはオプションが異なることがあるので、シェルスクリプトで実装すると、
その違いに振り回されなくてすむ
というのがあります。
903: 2019/08/10(土)22:37 ID:eyby+BxV(7/7) AAS
>>830に対して>>837なんて言い出す、それも自分ではPOSIXでの人だからそうとられても仕方がないと思うけど
(>>830はbashとzshの違いだし、デフォルトシェルが変わるだけでbashにすればだけで済む話でもあって)
まあ、言う通りなら俺の読み違いってことだな、まあ、すまんかった...腑に落ちないがw POSIXで書く書かないは好きにしろってことなら、すまんかった
904(1): 2019/08/10(土)22:48 ID:lTTXvTcQ(25/25) AAS
だいたいPOSIXに従ってないシェルもあるんだから
POSIXで書いたからといってどこでも動くわけじゃないし。
なんというか,ベンダ依存を嫌うあまりPOSIXに「依存」してしまってる感がある。
905(1): 2019/08/10(土)22:49 ID:x0rFB4wI(14/15) AAS
ここってPOSIXシェル以外の話題もおkなんだよな
なのに、それはbash依存とか外部コマンド使ったら遅いとか押しつけがましいやつがウザいんだよ
そんなもん好きに書かせろやって感じだわ
906: 2019/08/10(土)22:50 ID:AU+T1mdi(1/19) AAS
まったく言う通りでございますw
907: 2019/08/10(土)22:56 ID:L+B8OP2P(78/104) AAS
> 最新のOSXだとZshになってるんだな
という話に続いて、他のOSではいろんなシェルが使われてるという話をすることに
なんの問題があるのかわからんが?
bashをインストールするのが大変な環境もあるんだし
POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
逆にオプションの違いで動かんことに対応する方が手間なんだよ。
上の方でも出てたけど、sort -Vで動くウェーイってやってたらmacOSで動かんのだろ?
(ぐぐって確かに動かんというような記事ばかりだが、最新のmacOSだと対応してる気もするw)
908(1): 2019/08/10(土)22:58 ID:AU+T1mdi(2/19) AAS
結局POSIXで書けって言ってるだろうに。ふらふらしてんなあ
909: 2019/08/10(土)23:01 ID:L+B8OP2P(79/104) AAS
>>904
> だいたいPOSIXに従ってないシェルもあるんだから
> POSIXで書いたからといってどこでも動くわけじゃないし。
もっといい案があれば採用するが?
条件後出しするなって言われそうだから条件
組み込み機器など含めてソフトウェアを追加するのが困難なシステムでも動く
コンパイルはもとより、クロスコンパイル環境も不要
この条件でできるだけ多くの環境で同じように動く
910: 2019/08/10(土)23:02 ID:L+B8OP2P(80/104) AAS
>>908
どこをどう読めば、お前は命令されてるように感じるんだ?w
911(1): 2019/08/10(土)23:04 ID:AU+T1mdi(3/19) AAS
>POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
誰に向けて書いているの?
912: 2019/08/10(土)23:04 ID:L+B8OP2P(81/104) AAS
補足
> この条件でできるだけ多くの環境で同じように動く
これは多くの"種類"の環境っていみな
世の中Windowsばかりだろという反論は筋違い
913: 2019/08/10(土)23:05 ID:L+B8OP2P(82/104) AAS
>>911
する必要もないのに、bashに依存してる人
914: 2019/08/10(土)23:05 ID:6d2gRK68(17/19) AAS
なんかシラケちゃったな
915(1): 2019/08/10(土)23:05 ID:AU+T1mdi(4/19) AAS
それがだろうが。自分で何を書いているのかわかららないの?
916: 2019/08/10(土)23:06 ID:L+B8OP2P(83/104) AAS
>>915
だからそれってなんだよw
917: 2019/08/10(土)23:06 ID:AU+T1mdi(5/19) AAS
一貫性がないね。言質とられても逃げるだけだね
918: 2019/08/10(土)23:06 ID:L+B8OP2P(84/104) AAS
ずっと同じこと言ってるだろw
919(1): 2019/08/10(土)23:08 ID:AU+T1mdi(6/19) AAS
別にbashに依存してもいいだろう?それでそのスクリプトの実行に問題がなければ
>俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってない
と相入れないね
920: 2019/08/10(土)23:09 ID:L+B8OP2P(85/104) AAS
唐揚げにレモンをかけると美味しくなりますよって言ったら、
「俺にレモンをかけろと命令したな!ムキー」って怒るような
話が通じない人が多いw
921(1): 2019/08/10(土)23:10 ID:AU+T1mdi(7/19) AAS
わからんけど、複数が「?」と思ってるのだよ。よく考えような
922: 2019/08/10(土)23:11 ID:L+B8OP2P(86/104) AAS
>>919
bashに依存してもいいだろ。というと
POSIXのすることのメリットは矛盾しないからねw
「bashに依存してもいいだろ」はお前の主観で、
POSIX準拠で作ることのメリットは客観的なもの
客観的事実に、主観で反論しないでください
923: 2019/08/10(土)23:11 ID:L+B8OP2P(87/104) AAS
>>921
そうだと良いね(笑)
924(1): 2019/08/10(土)23:12 ID:AU+T1mdi(8/19) AAS
それもPOSIX好きな主観だとは気づかないのね
925: 2019/08/10(土)23:13 ID:L+B8OP2P(88/104) AAS
>>924
「POSIX好き」は主観
そのPOSIX好きの俺が述べてるPOSIX準拠のメリットは客観
926: 2019/08/10(土)23:14 ID:L+B8OP2P(89/104) AAS
あと11レスで今日一日でこのスレの1/10を俺が占拠したことになる。
お前ら、レス頑張れ!
927(1): 2019/08/10(土)23:14 ID:AU+T1mdi(9/19) AAS
結局何を言いたいの?POSIXで書け、できるだけそう書けと言いたいの?
928: 2019/08/10(土)23:15 ID:L+B8OP2P(90/104) AAS
>>927
POSIX準拠で書けば、メリットがあるので、
POSIX準拠で書く話をしましょう。
ネタがなければ、私が時々問題を出しますよ
興味がない人は見なくていいです。
レスもしなくていいです。
929(1): 2019/08/10(土)23:16 ID:AU+T1mdi(10/19) AAS
すべてのシェルスクリプトがPOSIX準拠するべきだ
との違いがわからんな
930: 2019/08/10(土)23:19 ID:6d2gRK68(18/19) AAS
AA省
931: 2019/08/10(土)23:23 ID:L+B8OP2P(91/104) AAS
>>929
Javaで書けばいろんなOSで動きます。
と言ったからって、ドライバまでJavaで書けと言ってるんだ!
なんて思いますか?
932(2): 2019/08/10(土)23:27 ID:AU+T1mdi(11/19) AAS
ドライバがJavaで書けるなら書く人もいるだろう。そんなOSがあれば
不適切よくわからん例えだな
結局
すべてのシェルスクリプトがPOSIX準拠するべきだ
と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
933: 2019/08/10(土)23:29 ID:L+B8OP2P(92/104) AAS
>>905
少なくとも5年前から
> □A. お約束
> 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
> Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
> bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
> 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2chスレ:unix
934: 2019/08/10(土)23:30 ID:L+B8OP2P(93/104) AAS
>>932
> ドライバがJavaで書けるなら書く人もいるだろう。
そう思うのが普通ですよね?
「書けと命令したんだ!ムキー」ってなる方がおかしい
935: 2019/08/10(土)23:31 ID:AU+T1mdi(12/19) AAS
自分だって否定されたらそうなってるように見えるけど?
936: 2019/08/10(土)23:32 ID:L+B8OP2P(94/104) AAS
>>932
Javaで例えれば冷静になって、
> ドライバがJavaで書けるなら書く人もいるだろう。
っていうわけだよね
でも、POSIXで書けばいろんなOSで動きますって言うと、頭に血が上って
> すべてのシェルスクリプトがPOSIX準拠するべきだ
> と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
っていう感想に変わっちゃうんだよねw
937: 2019/08/10(土)23:33 ID:L+B8OP2P(95/104) AAS
俺が「POSIXで書けばいろんな環境で動きます。」って言ったんだから
「POSIXで書けるなら書く人もいるだろう。」って言えばいいだけなのにw
Javaの場合みたいに!
938: 2019/08/10(土)23:36 ID:AU+T1mdi(13/19) AAS
全然わかってなくて、そのレスは酷い。なにか揚げ足とってよろこんでいるように見えるけどw
問題なければいいよどうでもというのと、問題なくてもメリットがあるからこっちに「決まってる」という違い
939: 2019/08/10(土)23:37 ID:L+B8OP2P(96/104) AAS
メリットを言うと「こっちに決まってる」という文章が書いてあると
勝手に脳内で補完してるんですか?
940: 2019/08/10(土)23:38 ID:L+B8OP2P(97/104) AAS
Javaのメリットを言いました。
メリットがあるから、こっちに「決まってる」と?
941(1): 2019/08/10(土)23:40 ID:AU+T1mdi(14/19) AAS
>POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし
>する必要もないのに、bashに依存してる人
自分で何を言ってきたのか忘れたの?
942: 2019/08/10(土)23:41 ID:L+B8OP2P(98/104) AAS
>>941
それだと俺が言ったことを復唱しただけだよw
だからなに?
943(1): 2019/08/10(土)23:42 ID:AU+T1mdi(15/19) AAS
ソコからなんだけど。そんな直前レスに対しての揚げ足とり的なじゃなくw
944(1): 2019/08/10(土)23:45 ID:AU+T1mdi(16/19) AAS
結局いろいろ逃げてるけど、本心としては
すべてのシェルスクリプトがPOSIX準拠するべきだ
なんだろに。それもただ言ってみただけなのね、なぜか複数が見る掲示板でw
まあいいや
945: 2019/08/10(土)23:45 ID:L+B8OP2P(99/104) AAS
>>943
言うべき言葉は何も見つからなかったの?中身がなにもないんだけど?
946(1): 2019/08/10(土)23:45 ID:L+B8OP2P(100/104) AAS
>>944
>>901より
> あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが?
明確に否定してんのに、お前何いってんの?
947: 2019/08/10(土)23:46 ID:AU+T1mdi(17/19) AAS
正直なにを言い出してるのだかと困惑からだよ
948: 2019/08/10(土)23:46 ID:L+B8OP2P(101/104) AAS
お、100レスいったでー(笑)
949(1): 2019/08/10(土)23:46 ID:x0rFB4wI(15/15) AAS
次のスレタイに【POSIX限定】って付けとけよ
アンチ除けになっていいと思うぞ
950: 2019/08/10(土)23:46 ID:AU+T1mdi(18/19) AAS
>>946
とてもそうは見えないという結論だな。俺の結論だから気にしなくていいよw
951: 2019/08/10(土)23:47 ID:L+B8OP2P(102/104) AAS
950を取った俺が次スレを建てるぞ!
シェルスクリプト総合 その31
2chスレ:tech
952: 2019/08/10(土)23:47 ID:L+B8OP2P(103/104) AAS
のがしたorz (笑)
953: 2019/08/10(土)23:48 ID:AU+T1mdi(19/19) AAS
>>949でよろしくねw
954: 2019/08/10(土)23:49 ID:L+B8OP2P(104/104) AAS
覚えてたらな
955: 2019/08/10(土)23:59 ID:6d2gRK68(19/19) AAS
そういや 【POSIX】 sh系互換 シェルスクリプトスレ ってのがあるやん
956: 2019/08/11(日)00:00 ID:GFStkW/c(1/9) AAS
え?どこに?
957: 2019/08/11(日)00:01 ID:GFStkW/c(2/9) AAS
ほんとだ!見逃してた! 次スレの関連リンクに追加しといたよ
【POSIX】 sh系互換 シェルスクリプトスレ
2chスレ:tech
958: 2019/08/11(日)00:02 ID:vE4Lr4uN(1/4) AAS
ほんとだw
2018/08/25
って、つい先日かと思ったら一年前かw
959: 2019/08/11(日)00:02 ID:vE4Lr4uN(2/4) AAS
スレ建ててくれたけど、どうかあちらを有効に使っていただきたい
960: 2019/08/11(日)00:03 ID:lm+uP+yI(1/3) AAS
あるのかよw
これで棲み分けできるな
961: 2019/08/11(日)00:03 ID:dSI5JGW8(1) AAS
一年も放置されててよく削除されなかったなw
962: 2019/08/11(日)00:05 ID:GFStkW/c(3/9) AAS
住処が二つになった!ドンッ!!
963: 2019/08/11(日)00:10 ID:GFStkW/c(4/9) AAS
ここはPOSIX準拠じゃないスレも対応?
fishとかの話題もどんどん扱うってことかな?
964: 2019/08/11(日)00:13 ID:GFStkW/c(5/9) AAS
fishってPOSIXと互換性はかなり低かったと思うんだが、
最終的に高い互換性を持たせるつもりなん?
外部リンク:www.excite.co.jp
> POSIX互換シェルとの互換性向上のために&&、||、!をサポート
fishの設計理念5原則(翻訳):使いやすさのための数々の気遣い
外部リンク:fish.rubikitch.com
> 可能な限り上記の目標を崩すことなく、fishはPOSIXの構文に従うべきです。
965: 2019/08/11(日)00:14 ID:vE4Lr4uN(3/4) AAS
最近では PowerShell なんてもあったり
どんどん扱うとかそういうんじゃなくて、そう否定するのはいないんじゃないかな
知らんけど
966: 2019/08/11(日)00:15 ID:GFStkW/c(6/9) AAS
外部リンク:fish.rubikitch.com
> ・ヒアドキュメントは パイプライン で echo コマンドを使うこととほとんど変わらないので不採用です。
> (訳注:「string trim 複数行文字列リテラル」でも代用可能)
> ・サブシェルとコマンド置換とプロセス置換はとても類似性が強いです。fishは コマンド置換 のみをサポートしています。
> それ以外はブロックまたはpsub標準シェル関数 で実現できます。
> ・別名定義 と シェル関数 の双方を持つことは混乱を招きます。特別にどちらも制限と欠点があるからです。
> fishの関数はいずれの構文の欠点も存在しません。
> ・POSIXのクオートの仕様は馬鹿げています!とくにシングルクォートは!!
やっぱ互換性はないと考えたほうが良いか
967: 2019/08/11(日)00:25 ID:GFStkW/c(7/9) AAS
おい、ついてこいよw
せっかくPOSIX以外の話もしてるんだから
968: 2019/08/11(日)00:27 ID:vE4Lr4uN(4/4) AAS
なんで「誰もが」興味があると思うのか
969: 2019/08/11(日)00:29 ID:GFStkW/c(8/9) AAS
関数定義の構文も違ってるみたいだ
外部リンク[html]:fishshell.com
970(1): 2019/08/11(日)02:09 ID:EariAe7h(1) AAS
>>714-732
Ruby で作った
require "csv"
options = { :headers => true, :col_sep => "\t" }
table_1 = CSV.read( "hoge.tsv", options ) # 読み込み
table_2 = CSV.read( "huga.tsv", options ) # 読み込み
CSV.open( "hoge_huga.tsv", "w", options ) do |csv| # 書き込み
csv << %w(a b c d e) # header
table_1.zip( table_2 ).each do |one, two|
csv << [ one[ "a" ], one[ "b" ], two[ "c" ], two[ "d" ], one[ "e" ] ]
end
end
971: 2019/08/11(日)02:44 ID:GFStkW/c(9/9) AAS
>>970
勘違いしてるぞ。明確に書いてはないかもしれんが a b c d e はヘッダじゃなくてデータだ。
eachは不要。あといつになったら、その古いハッシュの書き方をやめるんだ?
訂正版
require 'csv'
options = { col_sep: "\t" }
table1 = CSV.read('hoge.tsv', options)
table2 = CSV.read('huga.tsv', options)
CSV.open('hoge_huga.tsv', 'w', options) do |csv|
table1.zip(table2) do |one, two|
csv << [one[0], one[1], two[0], two[1], one[2]]
end
end
972: 2019/08/11(日)03:58 ID:FACDvm3m(1) AAS
偉ぶりたい満々やな
973(1): 2019/08/11(日)04:23 ID:GTeyRs5o(1) AAS
長いと大変そう
ruby にもこういうのありそう
DB<8> @a = qw(a b e)
DB<9> splice @a, 2, 0, qw(c d)
DB<10> print @a
abcde
974: 2019/08/11(日)04:38 ID:++HFlOfG(1/13) AAS
>>973
それがRubyにはPerlやJavaScriptみたいなspliceがないんだよね
でも今回は、挿入するだけだから、 csv << one.insert(2, *two) が使えるね
順番をもっと柔軟に変えたいってなると面倒だけど
975(6): 2019/08/11(日)05:27 ID:oR4Xkpxd(1) AAS
>>660
そういやこんなのはいかんの?
てか、こういう答え既に出た?
#!/bin/sh
cf=0
for f
do
if [[ cf -eq 0 ]]; then
cf=1
else
echo -n ','
fi
echo -n "x${f}z"
done
echo ''
976: 2019/08/11(日)16:04 ID:++HFlOfG(2/13) AAS
>>975
echo -n はPOSIX準拠ではない。が、メンテナンスが続いている最新シェルはすべてサポートされている
と思っていたんだが、上の方で出てるboshが対応してなかったわw
やっぱりprintfを使うのが一番なんだろうな
977: 2019/08/11(日)16:19 ID:++HFlOfG(3/13) AAS
改めて調べ直してみたら、yashも-nに対応してなかった。
echo -n aaa ってやったら、 -n aaa って出力される。
単純な出力以外printfばっかり使ってたから忘れてたw
978: 2019/08/11(日)16:34 ID:++HFlOfG(4/13) AAS
> if [[ cf -eq 0 ]]; then
bash依存する必要がないのに、bash依存してる例
979(1): 2019/08/11(日)16:44 ID:k+c7cOcw(1/10) AAS
重箱の隅が気になって仕方がないのね
そういうのは原理主義者としか思えないけどw
適切なスレが別にあるとわかったんだからそっちでどうぞ
980(1): 2019/08/11(日)16:45 ID:2JPwQqrg(1) AAS
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね
981: 2019/08/11(日)16:52 ID:lm+uP+yI(2/3) AAS
bash で書くならシェバンで明示するべし
#!/usr/bin/env bash
982(2): 2019/08/11(日)17:03 ID:k+c7cOcw(2/10) AAS
間違いはそこだよなあ。単に
#!/bin/bash
と書こうとして、うっかり
#!/bin/sh
にしてしまった感じかな
983: 2019/08/11(日)17:34 ID:++HFlOfG(5/13) AAS
>>979
debianはbash依存をなくすのに苦労したらしいからね。
外部リンク:wiki.ubuntu.com
> The major reason to switch the default shell was efficiency.
デフォルトシェルを(dash)に変更する理由は効率性です。
> Programs should be written to the standard,
>and if they use extensions they should declare them;
プログラムは標準で書くべきである。拡張を使うなら宣言しなさい。
正しい言葉だ。
拡張を使う理由がないのに効率性を落とす意味ないからね。
984: 2019/08/11(日)17:41 ID:++HFlOfG(6/13) AAS
>>980
どこでも動くために、POSIXに準拠することの大切さがわかるよね。
985: 2019/08/11(日)17:42 ID:++HFlOfG(7/13) AAS
>>982
うっかりじゃなくて、無知だと思うよ。
知ってる人が指摘してあげないとね。
986: 2019/08/11(日)17:46 ID:k+c7cOcw(3/10) AAS
傲慢だな。そうじゃないと今までの自分のレスが馬鹿みたいだから...
知らないのかもしれないが、/bin/sh が bash の場合、ちゃんとは動かない
てか、あっちのスレを行けよ
987(1): 2019/08/11(日)17:49 ID:k+c7cOcw(4/10) AAS
ああ、/bin/sh が bash で、しかも、bash が 3.x の場合かもしれない
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かないのはね。なので、うっかりとしか思えんな
988: 2019/08/11(日)17:50 ID:++HFlOfG(8/13) AAS
> /bin/sh が bash の場合、ちゃんとは動かない
だからちゃんと動かないコードを直すべきでは?
/bin/shはdash, bash, ash, ksh, zsh, mksh のいずれかの可能性がある(他にもあるかもしれない)
989(2): 2019/08/11(日)17:51 ID:k+c7cOcw(5/10) AAS
>>982って言ってるだろ
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
ね。詳しく正しくは
990: 2019/08/11(日)17:57 ID:++HFlOfG(9/13) AAS
>>987
全角スペースは見やすくするために流石にわざとだとして、
>>975のスクリプトはbash 2.x以上であれば動くよ。確認済み。
(bash 1系の環境は作ってないのでわからん)
Debian、Ubuntuであれば /bin/sh じゃ動かないので
手元のMacかな?それで試しただけだろうね。
991: 2019/08/11(日)17:59 ID:++HFlOfG(10/13) AAS
>>989
/bin/shのシンボリックリンクの実体がbash、
つまりposixモードの話をしてるのかもしれないけど、
posixモード(set -o posix)であっても [[ ]] は認識しちゃうからね。
bashのposixモードは、挙動の違いをposixに合わせるだけで
posixにはない拡張機能を無効にすることはないみたい。
992: 2019/08/11(日)18:01 ID:++HFlOfG(11/13) AAS
なので>>989が何を言いたいのかわからんね。
具体的に、どういう理由でbashで>>975が動かないのか
どのようなエラーが出力されるのかを言えば
説得力も出ると思うよ。
レス待ってるねw
993: 2019/08/11(日)18:01 ID:k+c7cOcw(6/10) AAS
#!/bin/sh
てか、sh とコマンド打って起動してでも、echo -n hello は -n hello と表示されるんだなあ。うちのはw
type echo しても echo is a shell builtin だしね。てか、/bin/echo は -n が効くやつだけど
994: 2019/08/11(日)18:02 ID:k+c7cOcw(7/10) AAS
ちなみに、bash --posix で起動しても echo -n hello は -n hello にはならん、なぞww
995(1): 2019/08/11(日)18:07 ID:++HFlOfG(12/13) AAS
> echo -n hello は -n hello と表示されるんだなあ。
POSIXのechoには-nはないからね。-nに依存するコードを書いてはいけない。
POSIX準拠で書く理由が増えたね。
996: 2019/08/11(日)18:07 ID:k+c7cOcw(8/10) AAS
誰かさんも使ってると言っていた環境なんだけどなw
$ which sh
/bin/sh
$ ls -l /bin/sh
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
$ sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ sh
$ echo -n hello
-n hello
$ exit
exit
$ bash --posix
$ echo -n hello
hello$
997(1): 2019/08/11(日)18:08 ID:++HFlOfG(13/13) AAS
ま、案外
> /bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
の理由は全角スペースが入ってるからだったりしてねw
998: 2019/08/11(日)18:08 ID:k+c7cOcw(9/10) AAS
>>995
自説の繰り替えしだけか。しょうもない
999: 2019/08/11(日)18:09 ID:k+c7cOcw(10/10) AAS
>>997
よく読めよ。都合が悪くて妄想モードか?
1000: 2019/08/11(日)18:09 ID:lm+uP+yI(3/3) AAS
1000!
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 19時間 5分 18秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net
▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.220s*