シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/
シェルスクリプト総合 その30
レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/07/01(月) 23:04:27.02ID:/rKj5XUf
897デフォルトの名無しさん
2019/08/10(土) 22:03:58.32ID:L+B8OP2P898デフォルトの名無しさん
2019/08/10(土) 22:04:32.77ID:eyby+BxV899デフォルトの名無しさん
2019/08/10(土) 22:12:33.18ID:L+B8OP2P900デフォルトの名無しさん
2019/08/10(土) 22:18:08.74ID:eyby+BxV 根本的に何も理解できないのな
マルチプラットフォームを意識するスクリプトも当然あるし、そうじゃない特定の環境で動けばいいスクリプトも当然ある
あんたは前者ひとつと言うからおかしい。具体的にって聞いたら個人的ツールってことなので、全然いろんな環境で動くがほぼ絶対ではないってことだよ
というか逆に特定の環境で動けばいいの方が多数を占めているのが現実だろう。なぜかは自分で>>890で言っているようなもん
POSIX大好きいろんな環境で動くスクリプト書くのが好きってだけだな
マルチプラットフォームを意識するスクリプトも当然あるし、そうじゃない特定の環境で動けばいいスクリプトも当然ある
あんたは前者ひとつと言うからおかしい。具体的にって聞いたら個人的ツールってことなので、全然いろんな環境で動くがほぼ絶対ではないってことだよ
というか逆に特定の環境で動けばいいの方が多数を占めているのが現実だろう。なぜかは自分で>>890で言っているようなもん
POSIX大好きいろんな環境で動くスクリプト書くのが好きってだけだな
901デフォルトの名無しさん
2019/08/10(土) 22:24:37.93ID:L+B8OP2P >>900
あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが?
お前の思い込みだろ。俺がそう言ってるって。
俺は
POSIX準拠であれば、多くの環境で動く(事実)
俺が使ってる個人ツールは、多くの環境で動かしたい(事実)
俺の個人ツール以外でも、gitに含まれてるスクリプトやrbenvなど多くの環境で動かしたいものはある(事実)
としか言ってないの
あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが?
お前の思い込みだろ。俺がそう言ってるって。
俺は
POSIX準拠であれば、多くの環境で動く(事実)
俺が使ってる個人ツールは、多くの環境で動かしたい(事実)
俺の個人ツール以外でも、gitに含まれてるスクリプトやrbenvなど多くの環境で動かしたいものはある(事実)
としか言ってないの
902デフォルトの名無しさん
2019/08/10(土) 22:27:45.82ID:L+B8OP2P 他にも俺が言ったことには、
外部コマンドはオプションが異なることがあるので、シェルスクリプトで実装すると、
その違いに振り回されなくてすむ
というのがあります。
外部コマンドはオプションが異なることがあるので、シェルスクリプトで実装すると、
その違いに振り回されなくてすむ
というのがあります。
903デフォルトの名無しさん
2019/08/10(土) 22:37:35.17ID:eyby+BxV904デフォルトの名無しさん
2019/08/10(土) 22:48:47.16ID:lTTXvTcQ だいたいPOSIXに従ってないシェルもあるんだから
POSIXで書いたからといってどこでも動くわけじゃないし。
なんというか,ベンダ依存を嫌うあまりPOSIXに「依存」してしまってる感がある。
POSIXで書いたからといってどこでも動くわけじゃないし。
なんというか,ベンダ依存を嫌うあまりPOSIXに「依存」してしまってる感がある。
905デフォルトの名無しさん
2019/08/10(土) 22:49:05.60ID:x0rFB4wI ここってPOSIXシェル以外の話題もおkなんだよな
なのに、それはbash依存とか外部コマンド使ったら遅いとか押しつけがましいやつがウザいんだよ
そんなもん好きに書かせろやって感じだわ
なのに、それはbash依存とか外部コマンド使ったら遅いとか押しつけがましいやつがウザいんだよ
そんなもん好きに書かせろやって感じだわ
906デフォルトの名無しさん
2019/08/10(土) 22:50:33.71ID:AU+T1mdi まったく言う通りでございますw
907デフォルトの名無しさん
2019/08/10(土) 22:56:44.56ID:L+B8OP2P > 最新のOSXだとZshになってるんだな
という話に続いて、他のOSではいろんなシェルが使われてるという話をすることに
なんの問題があるのかわからんが?
bashをインストールするのが大変な環境もあるんだし
POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
逆にオプションの違いで動かんことに対応する方が手間なんだよ。
上の方でも出てたけど、sort -Vで動くウェーイってやってたらmacOSで動かんのだろ?
(ぐぐって確かに動かんというような記事ばかりだが、最新のmacOSだと対応してる気もするw)
という話に続いて、他のOSではいろんなシェルが使われてるという話をすることに
なんの問題があるのかわからんが?
bashをインストールするのが大変な環境もあるんだし
POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
逆にオプションの違いで動かんことに対応する方が手間なんだよ。
上の方でも出てたけど、sort -Vで動くウェーイってやってたらmacOSで動かんのだろ?
(ぐぐって確かに動かんというような記事ばかりだが、最新のmacOSだと対応してる気もするw)
908デフォルトの名無しさん
2019/08/10(土) 22:58:46.81ID:AU+T1mdi 結局POSIXで書けって言ってるだろうに。ふらふらしてんなあ
909デフォルトの名無しさん
2019/08/10(土) 23:01:39.84ID:L+B8OP2P >>904
> だいたいPOSIXに従ってないシェルもあるんだから
> POSIXで書いたからといってどこでも動くわけじゃないし。
もっといい案があれば採用するが?
条件後出しするなって言われそうだから条件
組み込み機器など含めてソフトウェアを追加するのが困難なシステムでも動く
コンパイルはもとより、クロスコンパイル環境も不要
この条件でできるだけ多くの環境で同じように動く
> だいたいPOSIXに従ってないシェルもあるんだから
> POSIXで書いたからといってどこでも動くわけじゃないし。
もっといい案があれば採用するが?
条件後出しするなって言われそうだから条件
組み込み機器など含めてソフトウェアを追加するのが困難なシステムでも動く
コンパイルはもとより、クロスコンパイル環境も不要
この条件でできるだけ多くの環境で同じように動く
910デフォルトの名無しさん
2019/08/10(土) 23:02:36.58ID:L+B8OP2P >>908
どこをどう読めば、お前は命令されてるように感じるんだ?w
どこをどう読めば、お前は命令されてるように感じるんだ?w
911デフォルトの名無しさん
2019/08/10(土) 23:04:12.98ID:AU+T1mdi >POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。
誰に向けて書いているの?
誰に向けて書いているの?
912デフォルトの名無しさん
2019/08/10(土) 23:04:27.98ID:L+B8OP2P 補足
> この条件でできるだけ多くの環境で同じように動く
これは多くの"種類"の環境っていみな
世の中Windowsばかりだろという反論は筋違い
> この条件でできるだけ多くの環境で同じように動く
これは多くの"種類"の環境っていみな
世の中Windowsばかりだろという反論は筋違い
913デフォルトの名無しさん
2019/08/10(土) 23:05:05.76ID:L+B8OP2P >>911
する必要もないのに、bashに依存してる人
する必要もないのに、bashに依存してる人
914デフォルトの名無しさん
2019/08/10(土) 23:05:18.04ID:6d2gRK68 なんかシラケちゃったな
915デフォルトの名無しさん
2019/08/10(土) 23:05:34.13ID:AU+T1mdi それがだろうが。自分で何を書いているのかわかららないの?
916デフォルトの名無しさん
2019/08/10(土) 23:06:03.29ID:L+B8OP2P >>915
だからそれってなんだよw
だからそれってなんだよw
917デフォルトの名無しさん
2019/08/10(土) 23:06:21.63ID:AU+T1mdi 一貫性がないね。言質とられても逃げるだけだね
918デフォルトの名無しさん
2019/08/10(土) 23:06:45.91ID:L+B8OP2P ずっと同じこと言ってるだろw
919デフォルトの名無しさん
2019/08/10(土) 23:08:20.30ID:AU+T1mdi 別にbashに依存してもいいだろう?それでそのスクリプトの実行に問題がなければ
>俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってない
と相入れないね
>俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってない
と相入れないね
920デフォルトの名無しさん
2019/08/10(土) 23:09:10.56ID:L+B8OP2P 唐揚げにレモンをかけると美味しくなりますよって言ったら、
「俺にレモンをかけろと命令したな!ムキー」って怒るような
話が通じない人が多いw
「俺にレモンをかけろと命令したな!ムキー」って怒るような
話が通じない人が多いw
921デフォルトの名無しさん
2019/08/10(土) 23:10:11.18ID:AU+T1mdi わからんけど、複数が「?」と思ってるのだよ。よく考えような
922デフォルトの名無しさん
2019/08/10(土) 23:11:23.84ID:L+B8OP2P >>919
bashに依存してもいいだろ。というと
POSIXのすることのメリットは矛盾しないからねw
「bashに依存してもいいだろ」はお前の主観で、
POSIX準拠で作ることのメリットは客観的なもの
客観的事実に、主観で反論しないでください
bashに依存してもいいだろ。というと
POSIXのすることのメリットは矛盾しないからねw
「bashに依存してもいいだろ」はお前の主観で、
POSIX準拠で作ることのメリットは客観的なもの
客観的事実に、主観で反論しないでください
923デフォルトの名無しさん
2019/08/10(土) 23:11:53.50ID:L+B8OP2P >>921
そうだと良いね(笑)
そうだと良いね(笑)
924デフォルトの名無しさん
2019/08/10(土) 23:12:31.18ID:AU+T1mdi それもPOSIX好きな主観だとは気づかないのね
925デフォルトの名無しさん
2019/08/10(土) 23:13:23.36ID:L+B8OP2P926デフォルトの名無しさん
2019/08/10(土) 23:14:17.64ID:L+B8OP2P あと11レスで今日一日でこのスレの1/10を俺が占拠したことになる。
お前ら、レス頑張れ!
お前ら、レス頑張れ!
927デフォルトの名無しさん
2019/08/10(土) 23:14:26.20ID:AU+T1mdi 結局何を言いたいの?POSIXで書け、できるだけそう書けと言いたいの?
928デフォルトの名無しさん
2019/08/10(土) 23:15:52.78ID:L+B8OP2P929デフォルトの名無しさん
2019/08/10(土) 23:16:41.85ID:AU+T1mdi すべてのシェルスクリプトがPOSIX準拠するべきだ
との違いがわからんな
との違いがわからんな
930デフォルトの名無しさん
2019/08/10(土) 23:19:56.39ID:6d2gRK68 ∧∧ ミ _ ドスッ
( ,,)┌─┴┴─┐
/ つ. 終 了 │
〜′ /´ └─┬┬─┘
∪ ∪ ││ _ε3
゛゛'゛'゛
( ,,)┌─┴┴─┐
/ つ. 終 了 │
〜′ /´ └─┬┬─┘
∪ ∪ ││ _ε3
゛゛'゛'゛
931デフォルトの名無しさん
2019/08/10(土) 23:23:45.46ID:L+B8OP2P932デフォルトの名無しさん
2019/08/10(土) 23:27:18.24ID:AU+T1mdi ドライバがJavaで書けるなら書く人もいるだろう。そんなOSがあれば
不適切よくわからん例えだな
結局
すべてのシェルスクリプトがPOSIX準拠するべきだ
と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
不適切よくわからん例えだな
結局
すべてのシェルスクリプトがPOSIX準拠するべきだ
と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
933デフォルトの名無しさん
2019/08/10(土) 23:29:21.42ID:L+B8OP2P >>905
少なくとも5年前から
> □A. お約束
> 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
> Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
> bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
> 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
https://peace.5ch.net/test/read.cgi/unix/1415634843/
少なくとも5年前から
> □A. お約束
> 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
> Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
> bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
> 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
https://peace.5ch.net/test/read.cgi/unix/1415634843/
934デフォルトの名無しさん
2019/08/10(土) 23:30:20.34ID:L+B8OP2P935デフォルトの名無しさん
2019/08/10(土) 23:31:49.03ID:AU+T1mdi 自分だって否定されたらそうなってるように見えるけど?
936デフォルトの名無しさん
2019/08/10(土) 23:32:16.77ID:L+B8OP2P >>932
Javaで例えれば冷静になって、
> ドライバがJavaで書けるなら書く人もいるだろう。
っていうわけだよね
でも、POSIXで書けばいろんなOSで動きますって言うと、頭に血が上って
> すべてのシェルスクリプトがPOSIX準拠するべきだ
> と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
っていう感想に変わっちゃうんだよねw
Javaで例えれば冷静になって、
> ドライバがJavaで書けるなら書く人もいるだろう。
っていうわけだよね
でも、POSIXで書けばいろんなOSで動きますって言うと、頭に血が上って
> すべてのシェルスクリプトがPOSIX準拠するべきだ
> と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく
っていう感想に変わっちゃうんだよねw
937デフォルトの名無しさん
2019/08/10(土) 23:33:23.10ID:L+B8OP2P 俺が「POSIXで書けばいろんな環境で動きます。」って言ったんだから
「POSIXで書けるなら書く人もいるだろう。」って言えばいいだけなのにw
Javaの場合みたいに!
「POSIXで書けるなら書く人もいるだろう。」って言えばいいだけなのにw
Javaの場合みたいに!
938デフォルトの名無しさん
2019/08/10(土) 23:36:17.65ID:AU+T1mdi 全然わかってなくて、そのレスは酷い。なにか揚げ足とってよろこんでいるように見えるけどw
問題なければいいよどうでもというのと、問題なくてもメリットがあるからこっちに「決まってる」という違い
問題なければいいよどうでもというのと、問題なくてもメリットがあるからこっちに「決まってる」という違い
939デフォルトの名無しさん
2019/08/10(土) 23:37:50.32ID:L+B8OP2P メリットを言うと「こっちに決まってる」という文章が書いてあると
勝手に脳内で補完してるんですか?
勝手に脳内で補完してるんですか?
940デフォルトの名無しさん
2019/08/10(土) 23:38:26.61ID:L+B8OP2P Javaのメリットを言いました。
メリットがあるから、こっちに「決まってる」と?
メリットがあるから、こっちに「決まってる」と?
941デフォルトの名無しさん
2019/08/10(土) 23:40:37.90ID:AU+T1mdi >POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし
>する必要もないのに、bashに依存してる人
自分で何を言ってきたのか忘れたの?
>する必要もないのに、bashに依存してる人
自分で何を言ってきたのか忘れたの?
942デフォルトの名無しさん
2019/08/10(土) 23:41:50.08ID:L+B8OP2P943デフォルトの名無しさん
2019/08/10(土) 23:42:48.99ID:AU+T1mdi ソコからなんだけど。そんな直前レスに対しての揚げ足とり的なじゃなくw
944デフォルトの名無しさん
2019/08/10(土) 23:45:04.58ID:AU+T1mdi 結局いろいろ逃げてるけど、本心としては
すべてのシェルスクリプトがPOSIX準拠するべきだ
なんだろに。それもただ言ってみただけなのね、なぜか複数が見る掲示板でw
まあいいや
すべてのシェルスクリプトがPOSIX準拠するべきだ
なんだろに。それもただ言ってみただけなのね、なぜか複数が見る掲示板でw
まあいいや
945デフォルトの名無しさん
2019/08/10(土) 23:45:09.53ID:L+B8OP2P >>943
言うべき言葉は何も見つからなかったの?中身がなにもないんだけど?
言うべき言葉は何も見つからなかったの?中身がなにもないんだけど?
946デフォルトの名無しさん
2019/08/10(土) 23:45:53.29ID:L+B8OP2P947デフォルトの名無しさん
2019/08/10(土) 23:46:08.90ID:AU+T1mdi 正直なにを言い出してるのだかと困惑からだよ
948デフォルトの名無しさん
2019/08/10(土) 23:46:21.22ID:L+B8OP2P お、100レスいったでー(笑)
949デフォルトの名無しさん
2019/08/10(土) 23:46:38.90ID:x0rFB4wI 次のスレタイに【POSIX限定】って付けとけよ
アンチ除けになっていいと思うぞ
アンチ除けになっていいと思うぞ
950デフォルトの名無しさん
2019/08/10(土) 23:46:51.76ID:AU+T1mdi >>946
とてもそうは見えないという結論だな。俺の結論だから気にしなくていいよw
とてもそうは見えないという結論だな。俺の結論だから気にしなくていいよw
951デフォルトの名無しさん
2019/08/10(土) 23:47:16.77ID:L+B8OP2P952デフォルトの名無しさん
2019/08/10(土) 23:47:33.55ID:L+B8OP2P のがしたorz (笑)
953デフォルトの名無しさん
2019/08/10(土) 23:48:57.21ID:AU+T1mdi >>949でよろしくねw
954デフォルトの名無しさん
2019/08/10(土) 23:49:36.20ID:L+B8OP2P 覚えてたらな
955デフォルトの名無しさん
2019/08/10(土) 23:59:39.51ID:6d2gRK68 そういや 【POSIX】 sh系互換 シェルスクリプトスレ ってのがあるやん
956デフォルトの名無しさん
2019/08/11(日) 00:00:12.33ID:GFStkW/c え?どこに?
957デフォルトの名無しさん
2019/08/11(日) 00:01:16.28ID:GFStkW/c ほんとだ!見逃してた! 次スレの関連リンクに追加しといたよ
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
958デフォルトの名無しさん
2019/08/11(日) 00:02:01.46ID:vE4Lr4uN ほんとだw
2018/08/25
って、つい先日かと思ったら一年前かw
2018/08/25
って、つい先日かと思ったら一年前かw
959デフォルトの名無しさん
2019/08/11(日) 00:02:46.24ID:vE4Lr4uN スレ建ててくれたけど、どうかあちらを有効に使っていただきたい
960デフォルトの名無しさん
2019/08/11(日) 00:03:02.68ID:lm+uP+yI あるのかよw
これで棲み分けできるな
これで棲み分けできるな
961デフォルトの名無しさん
2019/08/11(日) 00:03:08.16ID:dSI5JGW8 一年も放置されててよく削除されなかったなw
962デフォルトの名無しさん
2019/08/11(日) 00:05:11.80ID:GFStkW/c 住処が二つになった!ドンッ!!
963デフォルトの名無しさん
2019/08/11(日) 00:10:56.97ID:GFStkW/c ここはPOSIX準拠じゃないスレも対応?
fishとかの話題もどんどん扱うってことかな?
fishとかの話題もどんどん扱うってことかな?
964デフォルトの名無しさん
2019/08/11(日) 00:13:32.87ID:GFStkW/c fishってPOSIXと互換性はかなり低かったと思うんだが、
最終的に高い互換性を持たせるつもりなん?
https://www.excite.co.jp/news/article/Cobs_1862541/
> POSIX互換シェルとの互換性向上のために&&、||、!をサポート
fishの設計理念5原則(翻訳):使いやすさのための数々の気遣い
http://fish.rubikitch.com/design-document-ja/
> 可能な限り上記の目標を崩すことなく、fishはPOSIXの構文に従うべきです。
最終的に高い互換性を持たせるつもりなん?
https://www.excite.co.jp/news/article/Cobs_1862541/
> POSIX互換シェルとの互換性向上のために&&、||、!をサポート
fishの設計理念5原則(翻訳):使いやすさのための数々の気遣い
http://fish.rubikitch.com/design-document-ja/
> 可能な限り上記の目標を崩すことなく、fishはPOSIXの構文に従うべきです。
965デフォルトの名無しさん
2019/08/11(日) 00:14:43.26ID:vE4Lr4uN 最近では PowerShell なんてもあったり
どんどん扱うとかそういうんじゃなくて、そう否定するのはいないんじゃないかな
知らんけど
どんどん扱うとかそういうんじゃなくて、そう否定するのはいないんじゃないかな
知らんけど
966デフォルトの名無しさん
2019/08/11(日) 00:15:10.68ID:GFStkW/c http://fish.rubikitch.com/design-document-ja/
> ・ヒアドキュメントは パイプライン で echo コマンドを使うこととほとんど変わらないので不採用です。
> (訳注:「string trim 複数行文字列リテラル」でも代用可能)
> ・サブシェルとコマンド置換とプロセス置換はとても類似性が強いです。fishは コマンド置換 のみをサポートしています。
> それ以外はブロックまたはpsub標準シェル関数 で実現できます。
> ・別名定義 と シェル関数 の双方を持つことは混乱を招きます。特別にどちらも制限と欠点があるからです。
> fishの関数はいずれの構文の欠点も存在しません。
> ・POSIXのクオートの仕様は馬鹿げています!とくにシングルクォートは!!
やっぱ互換性はないと考えたほうが良いか
> ・ヒアドキュメントは パイプライン で echo コマンドを使うこととほとんど変わらないので不採用です。
> (訳注:「string trim 複数行文字列リテラル」でも代用可能)
> ・サブシェルとコマンド置換とプロセス置換はとても類似性が強いです。fishは コマンド置換 のみをサポートしています。
> それ以外はブロックまたはpsub標準シェル関数 で実現できます。
> ・別名定義 と シェル関数 の双方を持つことは混乱を招きます。特別にどちらも制限と欠点があるからです。
> fishの関数はいずれの構文の欠点も存在しません。
> ・POSIXのクオートの仕様は馬鹿げています!とくにシングルクォートは!!
やっぱ互換性はないと考えたほうが良いか
967デフォルトの名無しさん
2019/08/11(日) 00:25:40.31ID:GFStkW/c おい、ついてこいよw
せっかくPOSIX以外の話もしてるんだから
せっかくPOSIX以外の話もしてるんだから
968デフォルトの名無しさん
2019/08/11(日) 00:27:49.34ID:vE4Lr4uN なんで「誰もが」興味があると思うのか
969デフォルトの名無しさん
2019/08/11(日) 00:29:16.73ID:GFStkW/c 関数定義の構文も違ってるみたいだ
https://fishshell.com/docs/current/tutorial.html#tut_functions
https://fishshell.com/docs/current/tutorial.html#tut_functions
970デフォルトの名無しさん
2019/08/11(日) 02:09:43.49ID:EariAe7h >>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
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:21.08ID:GFStkW/c >>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
勘違いしてるぞ。明確に書いてはないかもしれんが 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:29.22ID:FACDvm3m 偉ぶりたい満々やな
973デフォルトの名無しさん
2019/08/11(日) 04:23:39.41ID:GTeyRs5o 長いと大変そう
ruby にもこういうのありそう
DB<8> @a = qw(a b e)
DB<9> splice @a, 2, 0, qw(c d)
DB<10> print @a
abcde
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:47.36ID:++HFlOfG >>973
それがRubyにはPerlやJavaScriptみたいなspliceがないんだよね
でも今回は、挿入するだけだから、 csv << one.insert(2, *two) が使えるね
順番をもっと柔軟に変えたいってなると面倒だけど
それがRubyにはPerlやJavaScriptみたいなspliceがないんだよね
でも今回は、挿入するだけだから、 csv << one.insert(2, *two) が使えるね
順番をもっと柔軟に変えたいってなると面倒だけど
975デフォルトの名無しさん
2019/08/11(日) 05:27:14.15ID:oR4Xkpxd >>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 ''
そういやこんなのはいかんの?
てか、こういう答え既に出た?
#!/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:36.86ID:++HFlOfG >>975
echo -n はPOSIX準拠ではない。が、メンテナンスが続いている最新シェルはすべてサポートされている
と思っていたんだが、上の方で出てるboshが対応してなかったわw
やっぱりprintfを使うのが一番なんだろうな
echo -n はPOSIX準拠ではない。が、メンテナンスが続いている最新シェルはすべてサポートされている
と思っていたんだが、上の方で出てるboshが対応してなかったわw
やっぱりprintfを使うのが一番なんだろうな
977デフォルトの名無しさん
2019/08/11(日) 16:19:01.34ID:++HFlOfG 改めて調べ直してみたら、yashも-nに対応してなかった。
echo -n aaa ってやったら、 -n aaa って出力される。
単純な出力以外printfばっかり使ってたから忘れてたw
echo -n aaa ってやったら、 -n aaa って出力される。
単純な出力以外printfばっかり使ってたから忘れてたw
978デフォルトの名無しさん
2019/08/11(日) 16:34:27.13ID:++HFlOfG > if [[ cf -eq 0 ]]; then
bash依存する必要がないのに、bash依存してる例
bash依存する必要がないのに、bash依存してる例
979デフォルトの名無しさん
2019/08/11(日) 16:44:43.77ID:k+c7cOcw 重箱の隅が気になって仕方がないのね
そういうのは原理主義者としか思えないけどw
適切なスレが別にあるとわかったんだからそっちでどうぞ
そういうのは原理主義者としか思えないけどw
適切なスレが別にあるとわかったんだからそっちでどうぞ
980デフォルトの名無しさん
2019/08/11(日) 16:45:13.10ID:2JPwQqrg やっぱりどこでも動くシェルスクリプトなんて幻想なんだね
981デフォルトの名無しさん
2019/08/11(日) 16:52:18.97ID:lm+uP+yI bash で書くならシェバンで明示するべし
#!/usr/bin/env bash
#!/usr/bin/env bash
982デフォルトの名無しさん
2019/08/11(日) 17:03:10.35ID:k+c7cOcw 間違いはそこだよなあ。単に
#!/bin/bash
と書こうとして、うっかり
#!/bin/sh
にしてしまった感じかな
#!/bin/bash
と書こうとして、うっかり
#!/bin/sh
にしてしまった感じかな
983デフォルトの名無しさん
2019/08/11(日) 17:34:07.21ID:++HFlOfG >>979
debianはbash依存をなくすのに苦労したらしいからね。
https://wiki.ubuntu.com/DashAsBinSh
> 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;
プログラムは標準で書くべきである。拡張を使うなら宣言しなさい。
正しい言葉だ。
拡張を使う理由がないのに効率性を落とす意味ないからね。
debianはbash依存をなくすのに苦労したらしいからね。
https://wiki.ubuntu.com/DashAsBinSh
> 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:28.14ID:++HFlOfG >>980
どこでも動くために、POSIXに準拠することの大切さがわかるよね。
どこでも動くために、POSIXに準拠することの大切さがわかるよね。
985デフォルトの名無しさん
2019/08/11(日) 17:42:11.13ID:++HFlOfG986デフォルトの名無しさん
2019/08/11(日) 17:46:23.18ID:k+c7cOcw 傲慢だな。そうじゃないと今までの自分のレスが馬鹿みたいだから...
知らないのかもしれないが、/bin/sh が bash の場合、ちゃんとは動かない
てか、あっちのスレを行けよ
知らないのかもしれないが、/bin/sh が bash の場合、ちゃんとは動かない
てか、あっちのスレを行けよ
987デフォルトの名無しさん
2019/08/11(日) 17:49:05.08ID:k+c7cOcw ああ、/bin/sh が bash で、しかも、bash が 3.x の場合かもしれない
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かないのはね。なので、うっかりとしか思えんな
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かないのはね。なので、うっかりとしか思えんな
988デフォルトの名無しさん
2019/08/11(日) 17:50:38.09ID:++HFlOfG > /bin/sh が bash の場合、ちゃんとは動かない
だからちゃんと動かないコードを直すべきでは?
/bin/shはdash, bash, ash, ksh, zsh, mksh のいずれかの可能性がある(他にもあるかもしれない)
だからちゃんと動かないコードを直すべきでは?
/bin/shはdash, bash, ash, ksh, zsh, mksh のいずれかの可能性がある(他にもあるかもしれない)
989デフォルトの名無しさん
2019/08/11(日) 17:51:46.41ID:k+c7cOcw990デフォルトの名無しさん
2019/08/11(日) 17:57:05.79ID:++HFlOfG991デフォルトの名無しさん
2019/08/11(日) 17:59:38.45ID:++HFlOfG >>989
/bin/shのシンボリックリンクの実体がbash、
つまりposixモードの話をしてるのかもしれないけど、
posixモード(set -o posix)であっても [[ ]] は認識しちゃうからね。
bashのposixモードは、挙動の違いをposixに合わせるだけで
posixにはない拡張機能を無効にすることはないみたい。
/bin/shのシンボリックリンクの実体がbash、
つまりposixモードの話をしてるのかもしれないけど、
posixモード(set -o posix)であっても [[ ]] は認識しちゃうからね。
bashのposixモードは、挙動の違いをposixに合わせるだけで
posixにはない拡張機能を無効にすることはないみたい。
992デフォルトの名無しさん
2019/08/11(日) 18:01:22.10ID:++HFlOfG993デフォルトの名無しさん
2019/08/11(日) 18:01:36.14ID:k+c7cOcw #!/bin/sh
てか、sh とコマンド打って起動してでも、echo -n hello は -n hello と表示されるんだなあ。うちのはw
type echo しても echo is a shell builtin だしね。てか、/bin/echo は -n が効くやつだけど
てか、sh とコマンド打って起動してでも、echo -n hello は -n hello と表示されるんだなあ。うちのはw
type echo しても echo is a shell builtin だしね。てか、/bin/echo は -n が効くやつだけど
994デフォルトの名無しさん
2019/08/11(日) 18:02:28.72ID:k+c7cOcw ちなみに、bash --posix で起動しても echo -n hello は -n hello にはならん、なぞww
995デフォルトの名無しさん
2019/08/11(日) 18:07:05.61ID:++HFlOfG > echo -n hello は -n hello と表示されるんだなあ。
POSIXのechoには-nはないからね。-nに依存するコードを書いてはいけない。
POSIX準拠で書く理由が増えたね。
POSIXのechoには-nはないからね。-nに依存するコードを書いてはいけない。
POSIX準拠で書く理由が増えたね。
996デフォルトの名無しさん
2019/08/11(日) 18:07:37.64ID:k+c7cOcw 誰かさんも使ってると言っていた環境なんだけどな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$
$ 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$
レス数が950を超えています。1000を超えると書き込みができなくなります。
