1 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 23:17:50.64 ID:L+B8OP2P.net] シェルスクリプトに関する総合スレッドです。 全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 ・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。 シェルスクリプト総合 その30 https://mevius.5ch.net/test/read.cgi/tech/1561989867/
620 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 20:41:45.14 ID:WUiTiHRA.net] インタラクティブ、もしくは、それ以下のスクリプトでサブシェルのstderrの先を変えようにも変えようがないし、やるならその前でしかなと、意味はなさげと思ったが、 それが入っているスクリプト起動時にリダイレクトする場合には意味があるか。(コンソールへの)stderrいらないから捨てるとか hoge.sh #!/bin/bash exec 2> >(tee -a stderr.log >&2) ... ./hoge.sh 2> /dev/null >&2があるので、(コンソールへの)stderrはうまく捨てれる
621 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:57:13.42 ID:DBJTu1IU.net] bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する https://sechiro.haten blog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD%9C%E6%A5%AD%E3%82%84%E3%82%B9 そのスクリプトの出処はここだな 出力のプロレス置換ってこう使うのか 入力のプロセス置換はよく使ってるけどそっちはどうもな
622 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 14:53:58.72 ID:pQ8OW4Ak.net] プロレス乙
623 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 15:54:17.46 ID:tdzCu94K.net] プロミスの間違い
624 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 17:27:42.22 ID:niUt0I6q.net] サラ金市ね
625 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 16:58:31.20 ID:BxQhi0/5.net] grepは自身で上書きすると中身空になるけど回避方法ある?要はspongeなんだけども
626 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:06:24.59 ID:b8Gz5Yn9.net] data=$(grep 〜); echo "$data" > 〜
627 名前:デフォルトの名無しさん [2019/09/15(日) 17:10:14.49 ID:riyG3w3b.net] >>612 こんなのが出たので見るのを止めた。 この接続ではプライバシーが保護されません sechiro.hatenblog.com では、悪意のあるユーザーによって、パスワード、メッセージ、クレジット カードなどの情報が盗まれる可能性があります。詳細 NET::ERR_CERT_COMMON_NAME_INVALID
628 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:13:13.56 ID:b8Gz5Yn9.net] >>618 お前のパソコンなんかおかしくなってるぞw
629 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:15:19.48 ID:b8Gz5Yn9.net] ハッテンブログじゃなくてはてなブログだな
630 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:18:49.85 ID:LMFjfaUx.net] hattenblogこわい
631 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:28:57.92 ID:4TgO8+RX.net] 5ch では、はてなブログのURL を貼ってはいけない! 書き込み禁止画面が出ずに、いきなり吸い込まれて、 アクセス禁止になるようにしてあるから、超危険! 同様に、twitter の長いURL にも、吸い込まれるものがあるらしい そこだけ、全角などに変換した方がよい。 hatenblog
632 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:32:44.42 ID:4TgO8+RX.net] >>612 のURL は、証明書エラー! HTTPS の証明書が切れてる!
633 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:37:11.76 ID:4TgO8+RX.net] >>612 hatenblog そもそも、上ははてなブログじゃない!w a が無い はてなブログは、 hatenablog
634 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:40:16.44 ID:4TgO8+RX.net] >>612 hatenblog に、a を追加したら、ちゃんと見れた! はてなブログは、 hatenablog
635 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:40:54.01 ID:h836vV7+.net] https://sechiro.hatenablog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD%9C%E6%A5%AD%E3%82%84%E3%82%B9
636 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 18:39:06.79 ID:QquDNTIJ.net] https://sechiro.%68atenablog.com/entry/2013/08/15/bash%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%BD%AE%E6%8F%9B%E6%A9%9F%E8%83%BD%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E4%BD%9C%E6%A5%AD%E3%82%84%E3%82%B9
637 名前:デフォルトの名無しさん [2019/09/15(日) 20:14:01.28 ID:riyG3w3b.net] >>619 スマホのChromeなんだけどね。おかしいのかね?よくわからんが。
638 名前:デフォルトの名無しさん [2019/09/15(日) 20:17:20.74 ID:riyG3w3b.net] >>621 あ、そういうことか。 たしかに無事開いてしまったら何か違う世界を見てしまいそうで怖いアドレスだなw
639 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 19:53:43.50 ID:vTAkg/qq.net] 16進数(最大二桁 0xFF)から8進数に変換したいんですが bcを使う以外にsedなどを使った方法とかありますかね…? $ printf 'obase=8;ibase=16;%s\n' 'FA' | bc もしあれば,bcは16進数のアルファベットが大文字じゃないといけないし, POSIX標準とはいえUbuntuとかには既定で導入されてないしで, あまり使いたいくないんです(わがままですいません)
640 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 20:12:04.01 ID:Zn9wpmWA.net] printf '%o\n' 0xfa
641 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 21:17:46.43 ID:U9mfWlHU.net] 8進数にパーミッション以外の使いみちなんてあったのか…
642 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 23:39:17.58 ID:LCUbae2V.net] >>630 hex=fa oct=$(( ($hex >> 6) * 100 + ($hex >> 3 & 0x7) * 10 + ($hex & 0x7) )) # oct=$((0x$hex >> 6))$((0x$hex >> 3 & 0x7))$((0x$hex & 0x7)) 3桁固定版 echo "$oct" 出力が必須でない場合(変数に入れて処理する場合)は oct=$(printf '%o\n' 0xfa) よりも速いはず
643 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 23:43:56.37 ID:LCUbae2V.net] 他にも case を使って書けるはず 最大0xFFなら case $value in 01) 〜 02) 〜 : [fF][eE]) [fF][fF]) esac とかねw たかだか256+α行。頑張ればFF の一桁ずつ処理すれば行は減らせるだろう。
644 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 23:46:42.80 ID:LCUbae2V.net] >>633 訂正 × oct=$(( ($hex >> 6) * 100 + ($hex >> 3 & 0x7) * 10 + ($hex & 0x7) )) ○ oct=$(( (0x$hex >> 6) * 100 + (0x$hex >> 3 & 0x7) * 10 + (0x$hex & 0x7) ))
645 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 00:06:22.06 ID:IA1rgq5F.net] >>632 posixの範囲ではprintfで16進数から文字に変換することが出来ない printf '\101' # => A printf '\x41' # bashは変換できるが、dashでは変換できない バイナリデータの処理など、文字コードを使って処理する必要がある場合は 8進数を使うほうが良い
646 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 00:09:45.15 ID:IA1rgq5F.net] 8進数よりも16進数の方が使い勝手が良いのにパーミッションが8進数なのは、 当時はまだ16進数が発明されてなかったからだったりするのかな? シェルスクリプトもそうだけど、なんか古い時代は8進数しかなかった感じがする それとも単なるビット数を節約しただけなんだろうか?
647 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 00:18:14.43 ID:kEXgFQM4.net] 7ビット機だったような
648 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 02:12:04.50 ID:sr4VPY0J.net] rwxで3ビットしか使ってない必要ないと思ったからだろう
649 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 04:55:24.40 ID:KdPNzCQK.net] パーミッションの話じゃなくて
650 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 09:45:35.22 ID:3tDP3W6T.net] >>634 ありがとうございます!
651 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 12:39:27.59 ID:e1bW+EWq.net] >>637 >当時はまだ16進数が発明されてなかったからだったりするのかな? どこでなにが「発明」を指して居るのかわからんが、コンピュータ業界コンピュータサイエンス(?)としては当時でも普通に16進数があっただろう。スイッチをパチパチしてマシン語を打ち込む当時のコンピュータでは打ち込むプログラムは16進数で書いてたようだから Unix version 1 は 18ビットマシンの PDP-7 でから始まり、すぐに PDP-11 に移行したがその名残だろう、K&R C の文字リテラルでは8進数表現しかできないのとかは、また、K&R C の影響じゃね PDP-7 は 18ビット= 3 3 3 3 3 3 で表した方書いた方がきりがいいからそれが普通のような感じだったんじゃね、今でもパーミッションは3ビットに収まっているので3ビット区切りで表した方が書いた方がわかりやすいのと同じように
652 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 12:48:38.39 ID:N6BvjGdd.net] 昔はなぜか 12bit 15bit 18bit 24bit 36bit あたりのマシンが多い
653 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 13:26:02.16 ID:e1bW+EWq.net] そうなの。見物したスイッチをパチパチしてマシン語を打ち込む当時のコンピュータは16bitだったから、PDP-7(というかPDP-11の前までのDEC)が異端かと思ったw
654 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 09:32:25.18 ID:pw3H64dJ.net] 16進数から8進数への変換って↓ $ hex=fa; printf '%o' $((0x$hex)) ↑こういうのだとPOSIX違反?
655 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 13:37:02.90 ID:fQRmEVoK.net] POSIXは知らんが、 古いzsh? は $((0x$hex)) が使えなくて $((16#$hex)) だった気がする もしくは $((011)) が zshでは8進数にならなくて $((8#11)) と書かないといけない という問題だったかもしれない。まあ忘れたw
656 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 15:46:33.91 ID:pw3H64dJ.net] ふむ。ということは今であればほぼ問題ないという訳か。 thx
657 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 18:40:57.99 ID:YblgUZDU.net] >>644 基本的にメインフレームってカテゴリのコンピュータはCPUも自社設計だったので 8bit単位じゃなく自分たちの使いやすいbit数だった ザイログとかモトローラのCPUを使っていると基本的に8bitの整数倍になる
658 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:42:51.90 ID:UP8ZY9Jm.net] symlnkのフォルダからファイルをmvすると実体パスの方で移動するけどmvの仕様?
659 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:58:25.61 ID:wuCdbk0L.net] 移動なら実体を移動しなきゃ移動しないだろう、ファイルシステム的に
660 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:05:40.23 ID:QKufl6gy.net] 例えば/a/b/cがあって、/x/yが/a/bを指すとする。 cd /x/y; mv c ..したときにcが/x/cじゃなくて/a/cになるという話なら仕様。 実際はcd /x/yの時点でカーネル的には既に/a/bに移っている。 pwdして/x/yと表示されたり、プロンプトに/x/yと出たりすることがあるのは、シェルがそう見せているだけ。 外部コマンドを呼んだ時点で/x/yにいるという情報は伝わらない。
661 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:22:54.08 ID:dHMqf7rP.net] シェルによっては今いるディレクトリをシンボリックリンクのままPWD環境変数に出力するから、外部コマンドでも>>651 の場合に/a/bではなく/x/yにいると分かることもある だからmvでもやろうと思えば環境変数によって動作をかえて/x/cに移すこともー応可能ではある ただ普通はそういう危なっかしい動きはしない
662 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 00:58:42.07 ID:XnqhgXWR.net] なるほど ~/dir/foo.txtがあって、dirのリンクを~/Desktop/dir_linkに作ったんだ んでdir_linkからmv foo.txt ../したらDesktopになくてあれってね シンボリックリンクはあくまで別名だって念頭に置かないといつかやらかしそうだなぁ
663 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 13:44:18.78 ID:uT43KuRv.net] シンボリックリンク自体はカーネルっていうかファイルシステムの機能であって シェルの機能じゃないよね? シンボリックリンクされたディレクトリへの移動やその表示が、シェルの機能?
664 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 14:55:36.41 ID:16gV8N0U.net] シンボリックリンクはただのファイルで、APIが機能を提供してるだけだろう ハードリンクはファイルシステムの機能だろうが
665 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 15:20:14.51 ID:0wgm+uqt.net] シンボリックリンクはPOSIXで決まっているが、 シェルスクリプトとは関係ない。 シェルとも関係ない。すれ違いだ。 シェルスクリプトの話をしろ。
666 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 15:43:16.78 ID:PpvL3bdr.net] シンボリックリンクもハードリンクもファイルシステムの機能だ
667 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 15:44:56.02 ID:mZE+d06B.net] ドヤァ
668 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 16:01:07.98 ID:16gV8N0U.net] >>657 どこまでをファイルシステムかと言うのかだが、論理矛盾とかリンク切れとかあってもなんも関係ないのだから低レベル=どのファイルシステムでフォーマットする?というファイルシステムのファイルシステムではないな そのレベルではファイルとフラグを提供しているにすぎない APIも含めたOSがアプリケーションに対しての提供するファイルシステムといえばファイルシステムだろうが
669 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 16:41:43.41 ID:aoth6Tve.net] まぁ、いずれにしても、ここではスレ違い
670 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 16:58:42.91 ID:COQ8/G13.net] シンボリックリンクやハードリンクはOSの機能 ファイルシステムはそれを実装するだけ (FATのように実装してないものもある)
671 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 17:01:20.42 ID:PpvL3bdr.net] アホばっかw
672 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 17:09:58.15 ID:fWeAQpZu.net] 自戒か
673 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 17:22:55.59 ID:qNyZUwSM.net] ファイルシステムはOSの提供する1つの機能だろ
674 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 20:09:09.12 ID:uT43KuRv.net] いつからカーネルがOSに掏り替わった?
675 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 16:36:07.25 ID:vuS5tsH7.net] カーネルってファイルシステム含まないでしょうが
676 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 17:26:48.60 ID:Fy/ppuPa.net] 子供がまだ食ってる途中でしょうが
677 名前:デフォルトの名無しさん [2019/09/29(日) 15:56:27.36 ID:kt1IDkk5.net] 誠意って何かね
678 名前:デフォルトの名無しさん [2019/09/29(日) 17:07:22.81 ID:G1Omq4Sq.net] 金
679 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:09:52.55 ID:VaR9nylT.net] 女だったらアレかもしれんが
680 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:22:34.45 ID:CY5JaLwa.net] 俺が定期的にお題を出してやらないとすぐクソスレ化するなw
681 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:31:49.84 ID:cn7qdGIP.net] Oh, I like Japan. Japanese are crazy. Ha ha ha. Japanese are pigs, pigs, you know. Moneys and they have small cocks you know short legs yellow monkeys. Do you understand?
682 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:34:18.39 ID:RIFVILY+.net] POSIXの話するから荒れて盛り上がるから誰かしてよ
683 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:34:36.19 ID:RIFVILY+.net] POSIXの話すると荒れて盛り上がるから誰かしてよ
684 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 20:34:15.29 ID:1ct4yMlj.net] POSIX準拠で固定小数点ライブラリほしいな 小数使うことは稀だけど、たまに無いとめんどくさい exprは外部コマンドで遅いので却下w
685 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 20:53:22.53 ID:UgGWrkoZ.net] bashって便利だけど計算部分だけマジでダサいな 1+1が $((1+1))ってなんなんだよ
686 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 21:19:57.63 ID:1ct4yMlj.net] どの言語にも言えることだけど、 ダサい部分ってのは互換性のためだよ シェルスクリプトは外部コマンドを関数として呼び出せて、 そして外部コマンドに使える文字は、ファイルに使える文字と同じ だから例えば@とか%とかいう文字でさえ、コマンド名として使える だから、安易に記号を追加するわけにもいかないし予約語も増やせない。 $に関してはシェルスクリプト当初から特殊記号だったから 新たに特殊記号や予約語を増やすのではなく$を拡張するという方法を採用したのだろう 互換性は一番大事だからね
687 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 21:21:56.71 ID:1ct4yMlj.net] 補足 例えば「1 + 1」は、"1"コマンドを、+と1という引数で呼び出すという意味になるし 「1+1」だと"1+1"コマンドになる。 選択肢が限られるんだよね
688 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 06:57:25.74 ID:Ceph+2oU.net] $ awk 'BEGIN {print 0.1+0.2}' 0.3 bcより使いやすい悲しみ
689 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 13:47:50.63 ID:bgqbOy9v.net] POSIXの仕様書, 算術展開での(浮動)小数点演算は今度の2020年度改訂で一部解禁されるらしい。 ちなみに時を同じくして$'\n'←みたいな書式も解禁。 やったぜ。
690 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 14:14:05.05 ID:gJLA2fQe.net] やったぜ。
691 名前:デフォルトの名無しさん [2019/09/30(月) 14:57:01.11 ID:seE3nGDx.net] 石器時代かよワロタw
692 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 14:59:09.67 ID:1VQTT5dv.net] 生理がこないんですけど どうしたらいいですか?
693 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 15:14:42.58 ID:g4qimp0d.net] 俺も生理来たことないわー
694 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 15:24:33.48 ID:g4qimp0d.net] >>680 どこ情報ですか?
695 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 17:46:55.62 ID:zGRcNdYK.net] もしもし、先生!もしもし! だけどもねー、実はあのー、子供つくらないようにしてるんですよね、わたくしも本当に辛くてですね、子供には遺伝しないでしょうか?
696 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 19:45:29.40 ID:bgqbOy9v.net] >>685 austingroupbugs.net/view.php?id=249 こことか。
697 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 20:35:29.76 ID:sHSicWZI.net] >>687 いや、小数の話
698 名前:デフォルトの名無しさん [2019/09/30(月) 21:58:43.29 ID:M1BD3UNk.net] しょうっすか…
699 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:03:44.06 ID:qRuhgEzP.net] 無理にシェルスクリプトだけで小数対応しなくても、 perl -e "print 0.2*0.3" とか、いろいろやりようはあるからあまり必要性を感じない。
700 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:20:20.33 ID:nI7iDoAi.net] >>690 大量に計算をするとプロセス呼び出しになるから遅いんだよ $ time ksh -c 'for i in $(seq 1000); do n=$(echo "0.2*0.3" | bc -l); done' real 0m1.921s user 0m1.762s sys 0m0.715s $ time ksh -c 'for i in $(seq 1000); do n=$((0.2*0.3)); done' real 0m0.009s user 0m0.009s sys 0m0.000s たったの1000回でここまで差が出るからね
701 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:28:35.91 ID:qRuhgEzP.net] 意図と違うと思うが、 time perl -e '$j=0; for($i=0;$i<1000;$i+=1) { $j+=0.2*0.3; }; print $j' とか、別にシェルスクリプトだけに頼らんでもなんとかなってしまうというか・・・・
702 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:29:54.18 ID:nI7iDoAi.net] だから出来るできないの話はして無くて 遅いって話をしてる
703 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:35:15.29 ID:1VQTT5dv.net] >>692 これで事足りるな
704 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:58:52.54 ID:nI7iDoAi.net] perlは入ってない環境も有るのでその点でも駄目だしね
705 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 00:02:33.23 ID:cNB/gbgI.net] >>679 これで事足りるな
706 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 00:27:03.86 ID:rxcb8vGn.net] 必須すぎやろw
707 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 01:47:40.69 ID:SPlRKvH8.net] なになに縛りが好きなマゾなんだろうw
708 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 02:00:19.69 ID:rxcb8vGn.net] そんな事する必要がないなら縛りって言ってもいいけど、 perlが入ってない環境は実際に存在するからね
709 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 02:09:56.58 ID:ESup7bfu.net] awkも使えない環境で何やるんだよw
710 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 02:09:58.85 ID:PTA8MEY/.net] >>679
711 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 02:36:49.10 ID:eGCx9XC9.net] >>700 awkはbusyboxに入ってるよw
712 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 09:01:32.62 ID:O2y9F
] [ここ壊れてます]
713 名前:dCY.net mailto: 「可搬性が高い」を「POSIX縛り」と取り違えてるおバカさんがいますね… [] [ここ壊れてます]
714 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 09:11:30.09 ID:ZA6pNaC0.net] POSIXで縛るだけではPOSIX未満のbusyboxで動かなかったりするからね 可搬性を高くするにはPOSIXで規定されたコマンドであっても なるべく使わないほうが良い
715 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 10:51:02.41 ID:CGhZJwfl.net] どういうことなの…
716 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 11:09:51.43 ID:ZA6pNaC0.net] ここはシェルスクリプトのスレ つまり可搬性とはシェルスクリプトの話をしてる。 シェルスクリプトではよく外部コマンドを呼び出す しかし外部コマンドはOSによって違う。 特に基本的なコマンドは、各OSでバラバラに作っていたり 独自の修正を入れており複数の実装があり微妙に動きが異なっている。 例えば、LinuxのsedとMacのsedでは使える命令が違う。 POSIX準拠のコマンド(もちろんオプションなども含む)で規定されてるものだけを 使っていれば可搬性はそれなりにあるが、それでも完璧じゃない。 例えば組み込みで使われるbusyboxはPOSIX準拠コマンドのサブセットが実装されてる。 だから本気で可搬性を高くしようと思えばPOSIX縛りでも不十分。 POSIX準拠のコマンドが信じれない。という前提にたてば 思い切って外部コマンドすら呼び出さない、完全にシェルスクリプトだけで 実装するのがもっとも可搬性が高い。 もちろん限界は有るので実際には出来る限りシェルスクリプトで作って、 外部コマンドは必要最小限、必要に応じて互換性を吸収するようにラッパー関数を作る。 ということになる。
717 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 15:50:14.87 ID:P1455Lxu.net] 可搬性に異常に拘っているのは一人か二人しかいないけどな 可搬性に拘ってないというレスにも可搬性を押し付ける
718 名前:デフォルトの名無しさん [2019/10/01(火) 16:28:55.36 ID:9fvqkmcJ.net] 認めろよ。 シェルスクリプトに可搬性などない。 どこでも動くシェルスクリプトなど幻想。
719 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 16:40:08.47 ID:8eIOCDAd.net] hoge () { echo "Hello" } for i in $(seq 1000); do hoge a=$(hoge) done myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな 簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
720 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 16:46:56.18 ID:O2y9FdCY.net] それBashでやってない? 試しにKshでやってみて。(俺環かもしれんから,速度比較は晒さない)