1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 ・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 10:27:17.89 .net] >>242 人の話がシェルスクリプトと何の関係があるのという話だ 人の話をし始めたやつにいえな
250 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 11:48:50.47 .net] 宿題は自分でやりましょうってことだけじゃ
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 12:53:01 .net] >>245 全ての質問に対してそういう回答をしてるなら何も言わんよ
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 16:26:20 .net] >>232 まあ今どきの日本人はだいたいビル・ゲイツは知り合いだからなw
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 16:29:02 .net] >>246 でたでたw なぞの平等理論w あいつだけずるいとかいう妬みで周りが見えなくなってるんだろうなあ
254 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 16:51:38 .net] 自分なら質問者が 「今こうやってるけどもっと効率のいい方法ない?」 とか聞いてきたら答えてあげたくなる 一度答えてそーじゃねーよとか言われたら・・・w
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 17:19:48.25 .net] 一度答えてそーじゃねーよと言われたら? ↓これみて「そーじゃねーよ」言われたと思っちゃったの? 215 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/11(土) 11:20:47.30 ...... | sed -n '/_TAG("S.T.A.R.T")/,/_TAG("E.N.D")/p' | wc -l こんな感じ 216 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/12(日) 07:36:15.54 さんくす sedやwcなどの外部コマンド?を使わない方法はありますか?
256 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 17:20:54.13 .net] 沸点が低いんだろうなぁ。 少しでもなにか言われたら、親を侮辱されたかのように感じるんだろうな
257 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 17:27:27.07 .net] なんとなく答える前に sedやwcなどの外部コマンド?を使わない方法はありますか? と書いても、同じようにキレていそうな気がするなw
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 17:38:50 .net] 3連投かよw そんなに悔しかったのかよw
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 18:07:42.02 .net] レスしただけでこの反応w 矛先をずらしているのもありがちだなぁw
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/14(火) 23:33:18.21 .net] >>222-223 その _TAG("S.T.A.R.T") とかも字下げされてます echo ' _TAG("S.T.A.R.T")' なんかも考慮する必要はありません _TAG("S.T.A.R.T") は複数ありません ネストもありません >>224 可能ならman bashで出る内容だけで解決したいです。 _TAG("S.T.A.R.T")や_TAG("E.N.D")の前後にも行はあるので、わかりやすく _TAG("S.T.A.R.T")なんとか count=$((count + 1)) _TAG("E.N.D")かんとか ならベストなのですが。
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/15(水) 00:16:02.16 .net] >>255 while文で1行ずつ読んでSTART見つけたところからカウントしていってENDが見つかったら終了すりゃいいだけじゃないの 自分でどこまで作ったの?
262 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/15(水) 00:37:48.24 .net] >>256 もういいから早くスクリプト作れって言ってんだよ
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/15(水) 00:47:14.66 .net] >>257 なら今からman bash読むわ ちょっと量が多いから1週間待ってな 忘れるといかんからまたその頃に催促してくれ
264 名前:名無しさん@お腹いっぱい。 [2020/04/15(水) 08:44:47.78 .net] >>257 おまえ志賀だろ あわしろさんに謝れ
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/16(木) 00:36:27 .net] >>255 の後半からはawkのセンスありと見た
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/16(木) 07:29:49 .net] 自分で man 読んで自分で出来るようになる方が自分にとって有益だと思うんだが…
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/16(木) 12:09:07 .net] awkでやればできるよ!・・・全部BEGIN これ萎えるw
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/17(金) 09:28:05 .net] フレッシュなニンニクジュースを飲めばコロナの菌が死滅する
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/19(日) 04:34:10.20 .net] この板の住民なら生ニンニクで腸内細菌死滅して病院送りになるのは知ってそう
270 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/19(日) 04:48:20.74 .net] 言うほどUNIXやシェルスクリプトってコロナ菌に関係あるか?
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/19(日) 13:15:29 .net] [ と [[ の違いなんかも理解できてないままflgやcontinueを使って書いてみました。 _TAG("S.T.A.R.T")の後でもループの度にflgをチェックするのが無駄なので _TAG("S.T.A.R.T")を探すループと_TAG("E.N.D")まで行数を数えるループを完全に分けてflgを無くしスッキリ出来たらいいのですが。 declare -i i=0 declare -i flg=0 for f in `cat $INPUT_FILE` do if [ $flg == 0 ]; then if [[ "$f" =~ \t*'_TAG("S.T.A.R.T")' ]]; then flg=1 else continue fi else if [[ "$f" =~ \t*'_TAG("E.N.D")' ]]; then echo 行数は $i exit 0 else i=$i+1 fi fi done
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/19(日) 22:46:59.99 .net] >>266 > ループを完全に分けてflgを無くしスッキリ出来たらいいのですが。 まず for f in `cat $INPUT_FILE`を使うのはやめよう シェルスクリプトでテキストファイルを読むならwhile + read を使う そしてread は read してから read すると次の行を read する(当たり前だw)
273 名前:名無しさん@お腹いっぱい。 [2020/04/26(日) 02:43:28.05 .net] 一応それらしいのを書いてみました。 exitがあるのと、whileループの前と中にreadがあるのがちょっと不満です。 後チェックができるように do; read; while という使い方ができればいいのですが。 declare -i i=0 while : ; do read f <- 不要かも while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do read f done read f while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do i=$i+1 read f done echo 行数は $i exit done < $INPUT_FILE
274 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/26(日) 07:48:46 .net] そもそも done < $INPUT_FILE とか書く必要ない script.sh < $INPUT_FILE とやればいいんだよ その方が柔軟性が高くなる そうすりゃスクリプトは中身だけで良くなる。endはいらない。 そして while read do にも置き換えられるやろ? read f <- 不要かも while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do read f done read f while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do i=$i+1 read f done echo 行数は $i
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/26(日) 07:49:15 .net] × endはいらない。 ○ exitはいらない。
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/26(日) 13:23:56.84 .net] 後出しっぽくてすみません。 $INPUT_FILE は_TAG("S.T.A.R.T")や_TAG("E.N.D")と同じく固定名なので汎用性は不要なんです。 それにこの部分はscriptの一部で本体には引数があるため毎回script.sh 引数 < $INPUT_FILE とやるのはちょっと... といって、このためだけに分割するのも...
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/04/26(日) 16:11:10.53 .net] じゃあ { なかみ } < "$INPUT_FILE" とかすればいい
278 名前:名無しさん@お腹いっぱい。 [2020/10/27(火) 23:15:06.07 ID:oDaI72SOc] サイボウズ式:会社員でもフリーでもない、その中間ぐらいの生き方を模索しているところです https://www.huffingtonpost.jp/cybozu/careerpass_b_17142954.html?utm_hp_ref=jp-furiransu 「社員全員が副業」を体現し普及するスタートアップ、売上前年比4倍が物語る今後 https://newswitch.jp/p/23029 サイボウズの「副業したい人、採用します」戦略。正社員募集では見つからない“異能”の採り方 https://logmi.jp/business/articles/320834 10月より週休4日制度に移行します。 https://note.mu/soutaros/n/na788df21965b 「週休4日」や「1日5時間勤務」も可能に。アクセンチュアが、新たな勤務制度を取り入れた理由 https://www.huffingtonpost.jp/enhyouban/accenture_b_12796206.html フリーランスは増加した。でも「奴隷的」会社員の延長では社会は不自由なままだ。 https://www.huffingtonpost.jp/entry/freelance-basics_jp_5c988943e4b057f7330cb53a?utm_hp_ref=jp-hatarakikata 秩父・横瀬町にWeb業界のクリエイターが集結! 地域がひとつになったクリエイティブソン https://careerhack.en-japan.com/report/detail/813 自称「日本一の駅の待合所」はいったいドコがスゴいのか https://headlines.yahoo.co.jp/hl?a=20190425-00010004-moneyplus-bus_all 書店内の本が読み放題!新しいオフィス形態「BOOK&OFFICE 文悠」 https://headlines.yahoo.co.jp/article?a=20190424-00001676-shogyokai-bus_all 会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと https://www.businessinsider.jp/post-165731 フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か https://toyokeizai.net/articles/-/263055
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2020/12/09(水) 09:14:48.51 .net] https://i.imgur.com/7y5aA6m.jpg
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/01(月) 22:58:36.48 .net] $ eval "<" bash: 予期しないトークン `newline' 周辺に構文エラーがあります これってどういうこと?
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 03:17:30.34 .net] 予期しないトークン が出てきたんだろ
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 09:29:15.67 .net] そりゃ < をbashに渡すから $ < と同じ結果になる訳で
283 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 11:20:08.32 .net] おふたりありがとう たしかに $ < と同じ結果になった でもnewlineというのはどこにも記述してないのにどうして `newline' なんだろう?と
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 11:55:19.88 .net] 英語の勉強をしましょう
285 名前:名無しさん@お腹いっぱい。 [2021/03/02(火) 12:14:10.37 .net] >>278 パーサーが入力の「末尾」も改行文字と同じに扱っている または入力末尾に改行文字を追加してからパースしている といったところじゃないかな
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 12:48:18.17 .net] あー、そういうことか、なるほどわかりました 日本語の中に突然newlineが出てきて、しかもわざわざクォートされてるからてっきり予約語かと思い込んでいた というか目に見えない予約語なんだろうけど ありがとうございます
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/02(火) 16:21:26.89 .net] わかっとらんやんけ!
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/14(日) 10:53:57.86 .net] >>165 win鯖管か個人用途のみで使うなら7系はいいものだと思うけど、数百MB食うpwshがunix界隈で受け入れられるとはとても思えない まあ新興非b系シェルは駆逐されるかもしれんが そもそもまだMacとlinux主要ディストロにしか公式対応してないので IT職でなく、単にツールキットを享受できればいい人ならpwshでいいと思うよ たとえ趣味や仕事でも(だけど時代遅れな)b系シェルの技能は汎用性あるから、あえて普段から使うのも勉強になるよ
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/14(日) 10:59:38.87 .net] あと怒涛の互換性ブチ壊しバージョンアップ中だから、せっかく書いても一年で動かなくなる まだソフトウェア開発には使えないのが現状
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/14(日) 17:45:37.35 .net] シェルスクリプトの特徴は「人間がそのまま読むことが出来る1行1データのテキストを扱う」という点なんだわ シェルスクリプトは分かりづらいからPerlやPythonを使うとか言ってるやつがいるけど 1行1データのテキストを扱うならば、シェルスクリプトが一番うまく処理できる 正確に言えば、シェルスクリプトだけじゃなくてUNIX系のCLIコマンドがそれを前提としたインターフェースになってる CLIコマンド=シェルスクリプトのAPIなんだよ pwshがunix界隈で受け入れられないのは、APIが全く違っていて互換性がないから API=CLIコマンドなので、プログラマの多くはAPIコマンドを知ってる シェルスクリプトがいつまでたってもPerlやPythonに置き換わらないのも それらの言語はCLIコマンドというAPIを使わないから CLIコマンドを使うならば、シェルスクリプトより簡潔に書ける言語が存在しない
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/31(水) 10:37:33.90 .net] シェルなんだから外部コマンドは呼べるし、テキストも扱えるしそんなに変わらんのでは そんなに変らんということはすなわち、わざわざunix環境で使うモチベとしては弱いと思うが ドザーが流行りのwsl使うのには便利なんじゃね
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/03/31(水) 10:41:33.46 .net] 昔ながらのwinコマンドは大体外部コマンドだけど、pwshはほとんど組み込みコマンドなのがなあ slsとか分けて提供してくれればbetter grep/findとして個人的には使いたいんだが
293 名前:名無しさん@お腹いっぱい。 [2021/03/31(水) 22:49:44.43 .net] >>286 Windowsのコマンドはスクリプトから使うことを考慮されてない物が多い 例えば、copyコマンドは、copyすると 1 個のファイルをコピーしました。 とか人間のためのメッセージが出てくるからテキスト処理に向かない バッチファイルは人間が操作するのと同じことただやるだけ (出力を加工しない)なのでバッチファイルから使う分にはそれでもいいが シェルスクリプトのように出力と入力をつないで処理することには向いていない だからpwshはWindowsのコマンドを呼び出さない 一方pwshで使うAPIは1行1データのテキストにはなってないし 普段使ってる外部コマンドではない どちらかと言えばPythonなどの関数に近い Unix/Linuxの外部コマンド・・・1行1データのAPIインターフェースでCLIからも参照する pwsh、Python、多くの言語・・・引数と戻り値のAPIインターフェースで言語内から参照しない APIのインターフェースが大きく違っていて Unix/Linuxの外部コマンドは改行の扱いが難しいなどの制限があるが その制限の範囲内ではスクリプトからも人間からも使いやすくて 他の言語には置き換えることが出来ないんだよ
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 00:40:09.95 .net] Windowsでシェルスクリプト動かそうとすると、パスの\のエスケープで気が狂いそうになるから その辺捨てたパワーシェルの割り切りは、それはそれで理解できるけどなー
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 01:14:08.37 .net] >>289 Windowsでシェルスクリプトって何を使ってるの? パスの\のエスケープなんかしたことないよ pwshはスクリプト言語としては悪くないと思うよ ただPythonなんかと同じようなプログラミング用の言語ということ Pythonにも当てはまるけどプログラミング用の言語は シェルスクリプトとはスタイルが異なる。 シェルスクリプトは端末操作に特化した言語だから プログラミングはしにくいが端末操作は得意 まあPowerShellでも普段からコマンドレット使って端末操作してます。 pwshでもコマンドレットをメインで使いますって人なら シェルスクリプトと同じような感じに見えるかもしれないけど そんな人いるのかな?
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 03:02:34.14 .net] >>290 Windowsはダブルクォートの直前にバックスラッシュがある場合のみエスケープとして扱うということに一応なってる。 しかし実はWindowsではダブルクォートも引数の区切りも解釈するのはアプリケーションの仕事なので実は上記のように解釈される保証はない。
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/01(木) 06:04:39.51 .net] >>291 アプリケーションの仕事って言うなら、 パワーシェルから呼び出したときも同じじゃん・・・
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/14(水) 16:39:38.83 .net] int main( int argc,char **argv){ printf("%s\n",argv[1]); return 0;} みたいなプログラムを書いて a.exe "abc xyz" みたいに実行しても処理系によって出力が "abc xyz" だったり abc xyz だったり "abc だったり…そんな時代もあったね。
299 名前:名無しさん@お腹いっぱい。 [2021/04/17(土) 04:15:34.67 ID:1C2XvsMVm] 第一生命HD、副業解禁 約1万5000人対象 https://www.nikkei.com/article/DGXZQODF226QU0S1A120C2000000/ 第一生命HD、副業解禁 1万5000人対象―大手生保初 https://www.jiji.com/jc/article?k=2021020301353&g=eco IHI、国内8000人の副業解禁 重厚長大企業も転機 https://www.nikkei.com/article/DGXZQODZ171SS0X10C21A1000000 IHI、社外兼業を解禁 社内副業もルール化 https://www.jiji.com/jc/article?k=2021012100772&g=eco 50代に時給5000円の求人も。都会の会社員、“地方企業でリモート副業”が人気 https://nikkan-spa.jp/1711157 「週休3日制」導入は拡大するのか? 働き方が多様化する社会で生き抜く力 https://news.yahoo.co.jp/articles/2887cf226cf6f608ff511ee9e349fd6518d4311f スカイマーク、週休3日制へ 来春にも事務職対象 https://www.chunichi.co.jp/article/176961 週休3日制で何が変わる?休みが増えるメリット・デメリット https://career.joi.media/tips/2020/11/06/24138/ 週休3日制に賛成?反対? 東芝の模索 https://www.nhk.or.jp/ohayou/biz/20200701/index.html
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:39:52.31 .net] SSDがいっぱいになってきたのでfind
301 名前:ナ各binを周りfileが吐いたリストをunstripped(だったか?)でgrep&stripするスクリプト書いた 半分くらいになるのなこれ… 今の所不具合は出てないからヨシ おすすめ [] [ここ壊れてます]
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:48:14.77 .net] >>290 ubuntuだけどbashからpwsh -cで便利なツールとして使うのがベスト 多少最適化されてそうなapt提供のプレコンパイル版でも60MiBあるから配布時依存に加えるのは厳しいのが悩み 私的ハックにはすごく重宝
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:53:51.68 .net] >>289 `をエスケープに選んだのは英断だと思う m4と協調させようと思うと壊れるけど、まあm4のクオートは簡単に変えれるし満足
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 16:55:18.39 .net] >>295 golang製のバイナリってstripすると壊れるんじゃなかったっけ
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 17:07:12.66 .net] >>298 マジかー!でも何がgoとか把握してない… 内蔵HDDの方はテラ余裕なのでそっくりコピーしてある、万が一あってもそっちからブート&コマンド全て使えるから問題起きてからでもいいかな…
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/20(火) 18:04:12.33 .net] 学習コスト高そうだから何でも賢くキャストしてくれるキャスト器として使ってるわ [xml]'<foo>...'くらいのカジュアルユース 年だからjqとか付いてけないしjsonもキャストして.付けてるタブ補完連打でアクセス ただの型コレクションとして気兼ねなく使えばいい
307 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 20:07:40.11 .net] >>300 歳のせいにするな。お前の能力の問題だ。
308 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 22:14:14.03 .net] 噂のpwsh試してみたけど、とりあえずコマンドライン作業中の電卓代わりにはpythonよりはいいな 子シェルだからパス通ってて、普通に演算子と数学関数が下拵え無しで使えるってだけだけど 64KBと打つと65536を返してくるのは遊び心かな? まあスレ違いだねごめん
309 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/21(水) 22:37:37.09 .net] 電卓代わりでbc/dc思い出して遊ぼうと思ったら今時のlinuxにはdcはいってないのね 頭の体操にいいのに残念
310 名前:名無しさん@お腹いっぱい。 [2021/04/22(木) 09:18:28.19 .net] 普通パッケージぐらいは用意されていて入れれば入るんじゃない? deb系なら apt-get install dc で使える
311 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/22(木) 18:02:08.57 .net] LLのREPL使えばええやん
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/04/25(日) 11:29:37.47 .net] for i in "予定1" "予定2" "予定3" do [ $i = "予定1" ] && echo "予定1"; sleep 3 [ $i = "予定2" ] && echo "予定2"; sleep 3 [ $i = "予定3" ] && echo "予定3"; sleep 3 done
313 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/01(土) 09:40:38.84 .net] 今日のIDすごいwww
314 名前:名無しさん@お腹いっぱい。 [2021/05/02(日) 22:37:50.92 .net] しらんがなー
315 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/03(月) 22:39:37.02 .net] シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか?
316 名前:名無しさん@お腹いっぱい。 [2021/05/04(火) 00:29:14.02 .net] >>309 そもそもCGIはすでに廃れてるって知ってる?
317 名前:名無しさん@お腹いっぱい。 [2021/05/04(火) 00:30:10.82 .net] 今どき本格的なサーバー側アプリをCGIで作るなんてないわけで まあ簡単なツールぐらいならやるかもしれんけどさ
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 01:58:13.24 .net] >>311 知らんのだがCGI以外でどう処理してるの?ジャバスクリプト?
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 07:10:50.01 .net] >>312 WebアプリケーションフレームワークがWebサーバ機能を持っていて、フロントエンドのWebサーバからリバースプロキシして使うのが多いかな。 だからWebサーバとアプリケーションの接続インターフェイスと言う感じじゃ無いんよ。
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/04(火) 17:00:00.58 .net] えっ、そうなの? perlじゃ無くCGIがオワコンで、マトモwebサービス作成にはもう使われ無いのね。
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/06(木) 02:07:50.66 .net] perl自体がオワコンかどうかの話は別として歴史の話をすると 初期はウェブサーバー+perlスクリプト、つまりCGIでウェブシステムが作られていた もう2000年とかその頃の話よ。とほほのなんとかとかKentなんとかとかが幅を利かせていた 当時のプロ(ホームページ制作会社)でもそういったCGIを使っていた時代 その後はPHPが登場したが、これはウェブサーバーにPHPをモジュールとして組み込む mod_phpが利用されていた。アクセスのたびにperlスクリプトを呼び出さないから速い 同じようにmod_perlというのもあった。 この頃のプロといえば自社でサーバーを保守管理するウェブサービス会社だったかな その後から現在はアプリ自身でウェブサーバーとして起動するようになった RailsとかPythonとかはそれが主。もちろんphpでもperlでもこの仕組が使える クラウドの時代のプロのシステムはほぼこれ。もちろん今もホームページ制作会社はあるけど ウェブサービス作ってる会社ってもうこんな感じじゃないでしょ? アプリにウェブサーバーが内蔵されてると言っても、それはアプリに最適化されていて 静的コンテンツを配信するのには適していないから >>313 のいうように前段に普通のウェブサーバー(nginxやapache)を配置して アプリ用のURLだけリバースプロキシでWebフレームワークにわたす仕組み シェルスクリプトは、ブラウザにモジュールとして組み込んだり シェルスクリプト自身をウェブサーバーにすることはできないからCGIオンリーで使うしか無い と思ったらmod_bashなんてあるのなw まあアクセス数が少ない個人用のシステムとか、特定のサーバーからアクセスしない 死活監視用のエンドポイント程度になら使っても良いんじゃね?
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/06(木) 11:37:17.18 .net] ネタかなんかなの?このくだり
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/07(金) 04:02:34.96 .net] いや、マジレスだろ。
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/07(金) 09:52:15.00 .net] 時系列はおかしいけども、仕組みとしては大体合ってるし、いいんじゃない?
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/08(土) 11:58:10.94 .net] 間違ってると言うやつほど どこが間違っているかを言わない
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/08(土) 19:01:34.99 .net] しかしこれは CGI が使われなくなったと言われれば違和感はある Web サーバーがリバースプロキシに変化してアプリが Web サーバーを持ったに過ぎないのだろう CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 02:29:54.79 .net] >>320 アプリケーションにHTTPヘッダを環境変数で渡す方法などを定めたものがCGI、だからInterfaceなの。 この方法で渡していないならそれはCGIではない。
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 08:40:11.68 .net] もともとリバースプロキシの機能はウェブサーバーにあったのだから どちらかと言えばウェブサーバーをリバースプロキシだけに使うように 使い方が変化してって言う方が適切だね ちなみに開発時だとウェブサーバーはあまり使わない ウェブサーバーとしての機能や性能は必要ないので アプリ内臓の簡易ウェブサーバー機能で十分だから
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 08:52:57.10 .net] >>320 > CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな 一番の違いはアプリが常駐しているかどうか CGIはアプリが常駐して無くてアクセスのたびにコマンドを実行する このコマンドを実行するっていうのはかなり重い処理なのでパフォーマンスが出ない 特にシェルスクリプトなんか外部のコマンドを組み合わせて処理するものだから 1アクセスでシェルスクリプト本体の実行の他に sedコマンド+grepコマンド+awkコマンド+jqコマンド・・・みたいになるから Perlで作るよりも確実にパフォーマンスが悪くなる。Perlよりも悪い選択 それに対してCGIじゃない仕組みはサーバーマシン起動時に1回コマンドを起動するだけ もし誰かに、これからのCGIはシェルスクリプト!シェルスクリプトでもこれだけの速度が出る!って 郵便番号から住所を検索するデモをみせてシェルスクリプトでシステム開発させようと洗脳する組織団体にそそのかされていたら それアクセスが多い時にパフォーマンス出ますか?他の言語とベンチマークして比較していいですか?って聞いたら良いよ 郵便番号のデータなんてたかだか十数MBしかないしSSD使ってりゃ0.01秒未満で読み込めるのは当たり前 そんな低負荷なデモを数回見せた程度でパフォーマンスの検証なんてできやしない
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 11:14:52.20 .net] >>323 fastcgiってcgiと呼んじゃダメなん?
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 11:52:38.01 .net] >>324 FastCGIはCGIの環境変数や標準入出力の内容をカプセル化してsocketで通信するように定められているから無関係ではないんだけど、 環境変数とか標準入出力を使っているわけじゃないからやはりCGIでは無いと思うよ。
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 14:19:11.63 .net] そういやFastCGIなんて技術もあったな あれも「プロセス起動が遅い」という問題を プロセス終了をさせずにプロセスを使い回すことで 解決する技術なんだよな シェルスクリプトでそれがやれるかっつーと無理だろうな いやwikiによればhttps://ja.wikipedia.org/wiki/FastCGI 名前付きパイプもサポートしてるようだからから不可能じゃないのか? でもまあシェルスクリプトから呼び出すコマンドは どちらにしろプロセス起動になるわけで シェルスクリプトで全部実装するならまだしも 普通のシェルスクリプトではあまり効果がないだろうな
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/09(日) 14:26:02.10 .net] 英語だし読む気はないけどなんかそういう技術があるみたいだw FastCGI shell script https://stackoverflow.com/questions/4685045/fastcgi-shell-script ここの Look at "Writing agents in sh: conversing through a pipe" まあ一般的にシェルスクリプトでFastCGIは無理(無意味)やでって書かれてるようだね
334 名前:名無しさん@お腹いっぱい。 [2021/05/09(日) 14:40:26.25 .net] んでさ>>309 に聞きたいんだけど > シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか? ってどういう流れで誰に聞いたの? 二十年ぐらい前にコンピューターにちょっと詳しいだけの高校生や大学生の 会話で出てきた話だってのならわかるけどさ 今のウェブ開発ではCGIという単語自体でてこない
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/14(金) 08:14:28.21 .net] >>328 年寄りと話すと、API叩くことをCGI呼び出すと表現するよ
336 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 12:58:38.74 .net] アクセス数が少なければ今でもcgiで十分。
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 19:57:40.30 .net] アクセス数少ないのが前提w
338 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/17(月) 21:14:15.17 .net] 知り合いだけのサイトもありますし
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 00:26:19.32 .net] >>332 仕事では使い物にならないって意味だよ
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 00:27:32.81 .net] レガシーシステムの改修でもないかぎりCGIなんて出てこないし 新規でCGIとかいい出したら、そんな会社は切り捨てた方が良い
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 09:35:06.09 .net] PHP fpm ってよく使われてるように思うけど技術的には Fast CGI なんでしょ?
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 12:12:30.96 .net] cgiスレになって無いか?
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 14:51:57.87 .net] 0埋めした2桁数字文字をdeclare -iの変数に入れると時々エラーになるので ぐぐったら0埋め
344 名前:数字は8進数扱いって、何か面倒だなぁ... [] [ここ壊れてます]
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/18(火) 16:12:30.34 .net] 頭0は8進数ってC言語とか昔から使われてるけど 最近の言語は頭0を8進数とみなさないように変わってきてる気がするね 2桁とわかってるならdeclare -i i="${var#0}"でいけるよ そうでない場合はdeclare -i i="10#$var"でいけるかな bash以外だとダメかもしれんけど
346 名前:名無しさん@お腹いっぱい。 [2021/05/19(水) 02:39:42.52 .net] ありがとうございます。 expr でどうにか凌ぎました。
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 09:22:05.13 .net] exprは遅いぞ
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 09:42:12.88 .net] 遅いけど、どんな環境でも
349 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/19(水) 10:08:35.53 .net] だからexprに一切メリットないって