シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
シェルスクリプト総合 その34
■ このスレッドは過去ログ倉庫に格納されています
2020/08/21(金) 15:17:55.64ID:mArnj/tT
638デフォルトの名無しさん
2020/10/17(土) 10:31:07.65ID:0qFIP5N2 ch
sch
tsch
sch
tsch
639デフォルトの名無しさん
2020/10/17(土) 16:56:16.43ID:1zxs+zPu foo() { echo $A; }
A=1
A=2 foo
echo $A
ってやった時、1行目に2が表示されると思ってる。
そして2行目には1が表示されると思ってたんだけど
dashだと2と表示される。これってバグ?
A=1
A=2 foo
echo $A
ってやった時、1行目に2が表示されると思ってる。
そして2行目には1が表示されると思ってたんだけど
dashだと2と表示される。これってバグ?
640デフォルトの名無しさん
2020/10/17(土) 16:59:33.10ID:sPQ7iLy+ 普通の挙動じゃない?なにがおかしいと思ってる?
641デフォルトの名無しさん
2020/10/17(土) 17:00:23.70ID:1zxs+zPu642デフォルトの名無しさん
2020/10/17(土) 17:16:48.26ID:oDONqj5W bashやzshが仕様通りだと思うけど
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
If the command name is not a special built-in utility or function, the variable assignments shall be exported for the execution environment of the command and shall not affect the current execution environment except as a side-effect of the expansions performed in step 4
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_01
If the command name is not a special built-in utility or function, the variable assignments shall be exported for the execution environment of the command and shall not affect the current execution environment except as a side-effect of the expansions performed in step 4
643デフォルトの名無しさん
2020/10/17(土) 17:17:04.79ID:1zxs+zPu そもそも変数に代入しつつコマンド実行って
POSIXで規程されてない?
POSIXで規程されてない?
644デフォルトの名無しさん
2020/10/17(土) 17:17:34.52ID:1zxs+zPu あ>>642を読む前に書き込んだ。今から見てみる。
645デフォルトの名無しさん
2020/10/17(土) 17:22:47.37ID:1zxs+zPu >>642
これは?
If the command name is a function that is not a standard utility implemented as a function, variable assignments shall affect the current execution environment during the execution of the function. It is unspecified:
Whether or not the variable assignments persist after the completion of the function
Whether or not the variables gain the export attribute during the execution of the function
Whether or not export attributes gained as a result of the variable assignments persist after the completion of the function (if variable assignments persist after the completion of the function)
これは?
If the command name is a function that is not a standard utility implemented as a function, variable assignments shall affect the current execution environment during the execution of the function. It is unspecified:
Whether or not the variable assignments persist after the completion of the function
Whether or not the variables gain the export attribute during the execution of the function
Whether or not export attributes gained as a result of the variable assignments persist after the completion of the function (if variable assignments persist after the completion of the function)
646デフォルトの名無しさん
2020/10/17(土) 17:26:44.95ID:oDONqj5W >>645
あー、関数だからそっちだね
あー、関数だからそっちだね
647デフォルトの名無しさん
2020/10/17(土) 17:35:03.05ID:1zxs+zPu なんでこんなに複雑なんだ・・・
648デフォルトの名無しさん
2020/10/18(日) 00:40:25.10ID:ngGOxfYz649デフォルトの名無しさん
2020/10/18(日) 01:14:29.68ID:u/6+iFla なんで?
650デフォルトの名無しさん
2020/10/19(月) 05:17:03.52ID:8QFJcUQW for music in `cat $OUT`; do
のようなループを書いている
1行ごとに仕事をさせたいのだが
1行の中には空白があり、1行の要素が分断されている
どうすれば分断を防げるだろう?
のようなループを書いている
1行ごとに仕事をさせたいのだが
1行の中には空白があり、1行の要素が分断されている
どうすれば分断を防げるだろう?
651デフォルトの名無しさん
2020/10/19(月) 09:45:54.95ID:4EZdKnY4 while read
652デフォルトの名無しさん
2020/10/19(月) 10:00:20.18ID:8QFJcUQW thanks
653デフォルトの名無しさん
2020/10/25(日) 20:39:06.02ID:/pMQZumA tputってさどこまでがPOSIX準拠なの?
色はPOSIX準拠じゃないでしょ?
色はPOSIX準拠じゃないでしょ?
654デフォルトの名無しさん
2020/10/26(月) 04:13:51.20ID:tssW3pbf UNIX系で端末管理はどうやってるのか学べ
655デフォルトの名無しさん
2020/10/26(月) 16:46:36.36ID:4vMqqkwn AWKがシェルスクリプトに含まれるかどうかは
(定義不十分だし)勝手に議論しとけと思うけど,
GNU・BSD拡張を使っていないAWKで何か実装した場合それは
「POSIXに準拠している」と言えるわな。
だから「シェルスクリプトで〜」と言わずに
「POSIXに準拠したやりかたで〜」と言っておけば,
くだらない揚げ足取られずに済んだ訳だ。
時すでにお寿司🍣
(定義不十分だし)勝手に議論しとけと思うけど,
GNU・BSD拡張を使っていないAWKで何か実装した場合それは
「POSIXに準拠している」と言えるわな。
だから「シェルスクリプトで〜」と言わずに
「POSIXに準拠したやりかたで〜」と言っておけば,
くだらない揚げ足取られずに済んだ訳だ。
時すでにお寿司🍣
656デフォルトの名無しさん
2020/10/26(月) 23:22:51.04ID:2CuyKjNX >>655
あの人は何でもシェルスクリプトでできるって思っちゃってる人だから無理でしょ
POSIXと言いながら、C言語メインとかにはならない
1. シェルスクリプトでやるのがいい (基本)
2. できない? POSIXならC言語とか使ってもOKなんだよ!
POSIXは、シェルスクリプトではなできない事の言い訳として利用してるだけ
だからawkで作ってるのにシェルスクリプトだと言いはる
あの人は何でもシェルスクリプトでできるって思っちゃってる人だから無理でしょ
POSIXと言いながら、C言語メインとかにはならない
1. シェルスクリプトでやるのがいい (基本)
2. できない? POSIXならC言語とか使ってもOKなんだよ!
POSIXは、シェルスクリプトではなできない事の言い訳として利用してるだけ
だからawkで作ってるのにシェルスクリプトだと言いはる
657デフォルトの名無しさん
2020/10/27(火) 07:49:33.18ID:rn8NuyuD C言語使ってって小さなフィルタープログラムをだろ
既存でないフィルターは自分で作るというある意味シェルスクリプトの本道でもあるだろう
既存でないフィルターは自分で作るというある意味シェルスクリプトの本道でもあるだろう
658デフォルトの名無しさん
2020/10/27(火) 08:25:50.66ID:u8IX9f6Z >>657
シェルスクリプトってまさにこの
「C言語で書いた早くて小さいプログラム」
を組み合わせる為の言語だと思ってる。
もちろんシェルスクリプトの制御機構は計算完備なので
シェルとしての機能だけでプログラムを書くこともできるけど,
Unix哲学≠ノ従うならそれはちょっと違うんじゃないかと思う。
シェルスクリプトで完結する人ってUnix哲学をやたら推すし,
Unix哲学自体は今でもある程度参考になるとは思うけど,
ほんとうにUnixらしいやりかたは
「主処理はC言語で書いて組み合わせはシェル」っていうことだと思う。
シェルスクリプトってまさにこの
「C言語で書いた早くて小さいプログラム」
を組み合わせる為の言語だと思ってる。
もちろんシェルスクリプトの制御機構は計算完備なので
シェルとしての機能だけでプログラムを書くこともできるけど,
Unix哲学≠ノ従うならそれはちょっと違うんじゃないかと思う。
シェルスクリプトで完結する人ってUnix哲学をやたら推すし,
Unix哲学自体は今でもある程度参考になるとは思うけど,
ほんとうにUnixらしいやりかたは
「主処理はC言語で書いて組み合わせはシェル」っていうことだと思う。
659デフォルトの名無しさん
2020/10/27(火) 09:36:02.25ID:NxyNpTjA 自分の中でのシェルスクリプトって
新たにプログラムを位置から作るんじゃなくて
既存のコマンドを使って繋ぎ合わせて
間に合わせのプログラムを作るものだと思ってる
自分はプログラミングできるから普通にプログラム書けるけど
コンパイルとかの煩雑な手順を考えると
シェルスクリプトをぱっと書いてすぐ使えるってのはすごい手軽
パイプ処理が肝かなと思ってる
新たにプログラムを位置から作るんじゃなくて
既存のコマンドを使って繋ぎ合わせて
間に合わせのプログラムを作るものだと思ってる
自分はプログラミングできるから普通にプログラム書けるけど
コンパイルとかの煩雑な手順を考えると
シェルスクリプトをぱっと書いてすぐ使えるってのはすごい手軽
パイプ処理が肝かなと思ってる
660デフォルトの名無しさん
2020/10/27(火) 10:23:30.49ID:nSGvpwuJ >>658
シェルスクリプトをシェルスクリプトで完結する必要はない。
例えば、C言語で作った何かや「awkで作ったなにか」を呼び出すのもあり
それは当然の話だし、否定していない
言いたいことは、それは「awkで作ったなにか」であって
シェルスクリプトではないということだけ
みとめよう。それはawkプログラミングだ
シェルスクリプトをシェルスクリプトで完結する必要はない。
例えば、C言語で作った何かや「awkで作ったなにか」を呼び出すのもあり
それは当然の話だし、否定していない
言いたいことは、それは「awkで作ったなにか」であって
シェルスクリプトではないということだけ
みとめよう。それはawkプログラミングだ
661デフォルトの名無しさん
2020/10/27(火) 10:29:52.20ID:nSGvpwuJ シェルスクリプトで外部コマンドを呼び出すのはありだし
全ての環境で動かすならPOSIX準拠にしろと思うが
POSIX準拠にこだわる必要もない
例えば、dockerやgitはPOSIX準拠ではないコマンドだ
POSIX至上主義かなにかしらんが、シェルスクリプトから
使っていいのはPOSIX準拠コマンドだけだというのなら
dockerやgitすら使えないということになる
んなばかな(笑)
環境が限定される(つまりdockerやgitが入っていること)という前提で
シェルスクリプトでPOSIX準拠ではないコマンドは普通に使う
つまり何が言いたいかと言うと、シェルスクリプトで読みやすさのために長いオプションを使えという話だ
長いオプションはPOSIX準拠ではないからショートオプションを使え?アホか
どちらにしろPOSIX準拠でないコマンドを使うのだ
全ての環境で動かすならPOSIX準拠にしろと思うが
POSIX準拠にこだわる必要もない
例えば、dockerやgitはPOSIX準拠ではないコマンドだ
POSIX至上主義かなにかしらんが、シェルスクリプトから
使っていいのはPOSIX準拠コマンドだけだというのなら
dockerやgitすら使えないということになる
んなばかな(笑)
環境が限定される(つまりdockerやgitが入っていること)という前提で
シェルスクリプトでPOSIX準拠ではないコマンドは普通に使う
つまり何が言いたいかと言うと、シェルスクリプトで読みやすさのために長いオプションを使えという話だ
長いオプションはPOSIX準拠ではないからショートオプションを使え?アホか
どちらにしろPOSIX準拠でないコマンドを使うのだ
662デフォルトの名無しさん
2020/10/27(火) 11:22:58.65ID:B6tDM1Ic663デフォルトの名無しさん
2020/10/27(火) 11:36:52.21ID:nSGvpwuJ "既存プログラム"を組み合わせるのはUnixらしいが
新しいコマンドを作って組み合わせて使うユニケージはUnixらしくない
しかもそのコマンドが完全に特殊用途向けのコマンドであり
Unixでいうシェルスクリプトにはまったくもって応用できない
今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
【PR】2020.09.25
https://type.jp/et/feature/14070/
はは、クソ開発手法だ。ギークのだーれも熱狂してねーよ
せめてマニアとかオタクとかいえ、ギークと言ったら海外用語だ
海外に進出してないユニケージが熱狂とか嘘作んじゃねーよ
新しいコマンドを作って組み合わせて使うユニケージはUnixらしくない
しかもそのコマンドが完全に特殊用途向けのコマンドであり
Unixでいうシェルスクリプトにはまったくもって応用できない
今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】
【PR】2020.09.25
https://type.jp/et/feature/14070/
はは、クソ開発手法だ。ギークのだーれも熱狂してねーよ
せめてマニアとかオタクとかいえ、ギークと言ったら海外用語だ
海外に進出してないユニケージが熱狂とか嘘作んじゃねーよ
664デフォルトの名無しさん
2020/10/27(火) 12:20:04.79ID:IzIv2i9p Power-Shell は unix らしさの極みか?
漏れはそうは思わんが
漏れはそうは思わんが
665デフォルトの名無しさん
2020/10/27(火) 12:30:26.45ID:eXfPuMud Power-Shell は反Unixだろ
そもそもWindowsにはまともなコマンドがないから
コマンドの連携ということがしづらい
あっても、正常終了時に「処理が完了しました」とかでて連携ができない
あれはコマンドを連携させずに、ただ並べるだけ
そういう世界だからシェルだけ改良しても意味がない
Unixでいうコマンド相当のものが必要
それが.NET framework。しかし.NET frameworkはAPI
APIだから普段CLIから実行するものではないし
コマンドとして使うのは面倒
Power-Shellはシェルスクリプトとしての特徴と
メリットである簡潔さが失われた「普通の言語」に相当する
そもそもWindowsにはまともなコマンドがないから
コマンドの連携ということがしづらい
あっても、正常終了時に「処理が完了しました」とかでて連携ができない
あれはコマンドを連携させずに、ただ並べるだけ
そういう世界だからシェルだけ改良しても意味がない
Unixでいうコマンド相当のものが必要
それが.NET framework。しかし.NET frameworkはAPI
APIだから普段CLIから実行するものではないし
コマンドとして使うのは面倒
Power-Shellはシェルスクリプトとしての特徴と
メリットである簡潔さが失われた「普通の言語」に相当する
666デフォルトの名無しさん
2020/10/27(火) 18:52:31.21ID:B6tDM1Ic >>665
PowerShellを使ったことがないだろ?w
ヘンにハイフンを入れたりしてるしな。
コマンドによってはちゃんとオブジェクトを返すし、パイプで処理することもできる。
.NETを直接実行することもできるし、テキストベースでしかないUnixシェルよりも使いやすいこともある。
「反Unix」というよりは、それを越えたところもあるWindowsらしいシェルと言える。
ただ、いつまでどのようにサポートされるのか、最近はちょっと不安。。。
poshとのかねあいとか。
PowerShellを使ったことがないだろ?w
ヘンにハイフンを入れたりしてるしな。
コマンドによってはちゃんとオブジェクトを返すし、パイプで処理することもできる。
.NETを直接実行することもできるし、テキストベースでしかないUnixシェルよりも使いやすいこともある。
「反Unix」というよりは、それを越えたところもあるWindowsらしいシェルと言える。
ただ、いつまでどのようにサポートされるのか、最近はちょっと不安。。。
poshとのかねあいとか。
667デフォルトの名無しさん
2020/10/27(火) 18:54:44.28ID:a7WAgl/q フィルターは、Ruby で作る
Linux のPowerShell は、Azure しか使われていないだろ?
Linux のPowerShell は、Azure しか使われていないだろ?
668デフォルトの名無しさん
2020/10/27(火) 20:43:43.48ID:gFMGawtc669デフォルトの名無しさん
2020/10/27(火) 22:01:39.01ID:7WqSRFWS スペースがあると誤解しているのと、スペースをハイフンに置き換える習慣があるジジイの命名
670デフォルトの名無しさん
2020/10/27(火) 22:32:46.87ID:B6tDM1Ic671デフォルトの名無しさん
2020/10/28(水) 02:15:01.01ID:TQndZTJN >>670
PowerShellで作ったプログラムをオプソで公開してるがなにか?
PowerShellで作ったプログラムをオプソで公開してるがなにか?
672デフォルトの名無しさん
2020/10/28(水) 06:49:20.54ID:Df2NTJPb オプソってなに?
673デフォルトの名無しさん
2020/10/28(水) 08:15:00.68ID:zcWN9+mU Open source
674デフォルトの名無しさん
2020/10/28(水) 13:27:15.30ID:l3R5yM/w675デフォルトの名無しさん
2020/10/28(水) 17:48:34.37ID:QWPlcBUD これだけマルチコアになった今日び、コマンドの方も対応して欲しい気がする。
ファイル圧縮のコマンドとか、マルチスレッドで処理したら速くできるはず。
あるいはどこまでもマルチプロセス主義でいくというなら... 例えば並列パイプ? というか
今のパイプだとデータフローが一本道だがこれを並列に分散して走らせて最後データを
一本にまとめるような処理の仕組みがあってもいいのではないかと。
ちなみに一本道は「いっぽんみち」で「いっぽんどう」ではないからな、って聞いてないか
ファイル圧縮のコマンドとか、マルチスレッドで処理したら速くできるはず。
あるいはどこまでもマルチプロセス主義でいくというなら... 例えば並列パイプ? というか
今のパイプだとデータフローが一本道だがこれを並列に分散して走らせて最後データを
一本にまとめるような処理の仕組みがあってもいいのではないかと。
ちなみに一本道は「いっぽんみち」で「いっぽんどう」ではないからな、って聞いてないか
676デフォルトの名無しさん
2020/10/28(水) 19:10:42.29ID:Aw3ALjki 例えるならxargs
677デフォルトの名無しさん
2020/10/28(水) 19:52:02.68ID:vhMFXsQD パイプで繋げば自動でマルチになるではないか
678デフォルトの名無しさん
2020/10/28(水) 20:17:48.21ID:FddMFcrq あまりわかってなさそだな>>675は
並列パイプとかも簡単に言ってそう
並列パイプとかも簡単に言ってそう
679デフォルトの名無しさん
2020/10/28(水) 20:18:18.79ID:NAroBJuS 最期に一本にまとめるというのならGNU parallelやろ?
バックグラウンドプロセスを使って自分でまとめてもいいが
バックグラウンドプロセスを使って自分でまとめてもいいが
680デフォルトの名無しさん
2020/10/28(水) 20:22:18.78ID:zcWN9+mU パイプって元々非同期処理(これはPOSIXで規定)だから,
実装によっては普通にマルチスレッドで処理してんじゃないの?
実装によっては普通にマルチスレッドで処理してんじゃないの?
681デフォルトの名無しさん
2020/10/28(水) 20:22:22.24ID:58wSuA1P そもそもUnixにはforkというコマンドがあってだな
682デフォルトの名無しさん
2020/10/28(水) 20:23:15.77ID:XBU5yUok ターミナルを2枚開いてマルチプロセス!
683デフォルトの名無しさん
2020/10/28(水) 20:32:27.18ID:NAroBJuS 多くの言語が並列処理を行うように明示的に書かなければ並列処理されないのに比べて
シェルスクリプトは普通に書いてもかってに並列処理が行われる言語の1つ
シェルスクリプトは普通に書いてもかってに並列処理が行われる言語の1つ
684デフォルトの名無しさん
2020/10/28(水) 21:19:48.83ID:zcWN9+mU685デフォルトの名無しさん
2020/10/28(水) 21:48:39.39ID:K6dD4VVC >>683,684
お前らもプロセスとスレッドの違いがわかってないようだがな
お前らもプロセスとスレッドの違いがわかってないようだがな
686デフォルトの名無しさん
2020/10/28(水) 22:22:18.44ID:1fF6N90I >>685
わかってるが、何を根拠にいちゃもんつけたの?w
わかってるが、何を根拠にいちゃもんつけたの?w
687デフォルトの名無しさん
2020/10/28(水) 22:37:57.46ID:K6dD4VVC お前はどっちなの?
まだ ID:NAroBJuS ならそうわかってはないようでもあるが、ID:zcWN9+mU は明らかにわかってないなw
まだ ID:NAroBJuS ならそうわかってはないようでもあるが、ID:zcWN9+mU は明らかにわかってないなw
688デフォルトの名無しさん
2020/10/28(水) 22:42:56.15ID:1fF6N90I 質問を質問で返すな
まずお前が根拠をいえ
言わないで質問する理由なんかないだろ
まずお前が根拠をいえ
言わないで質問する理由なんかないだろ
689デフォルトの名無しさん
2020/10/28(水) 22:43:30.54ID:l3R5yM/w まあ、>>680の「マルチスレッド」はおかしいな。
言うなら「マルチタスク」とかやろ。
言うなら「マルチタスク」とかやろ。
690デフォルトの名無しさん
2020/10/28(水) 22:45:28.30ID:K6dD4VVC どっちなのかも言えないのか。後者だろなな
691デフォルトの名無しさん
2020/10/28(水) 22:47:04.72ID:1fF6N90I 前者だが?はい、言いましたーw
次はお前の番だが、ここまでやっておいて
お前は答えられないってことはないよな
次はお前の番だが、ここまでやっておいて
お前は答えられないってことはないよな
692デフォルトの名無しさん
2020/10/28(水) 22:54:11.38ID:K6dD4VVC693デフォルトの名無しさん
2020/10/28(水) 22:56:23.42ID:1fF6N90I >>692
誰が同じことを繰り返し言えって言った?
> 「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
の理由を書けといったんだが?
誰が同じことを繰り返し言えって言った?
> 「多くの言語が並列処理を行うように明示的に書かなければ並列処理されない」なんてわざわざ書くのはあんまわかってなさそうだなってとこ
の理由を書けといったんだが?
694デフォルトの名無しさん
2020/10/28(水) 22:57:50.86ID:K6dD4VVC 書いたぞ。読まないのは知らないぞ
695デフォルトの名無しさん
2020/10/28(水) 22:59:25.60ID:1fF6N90I 書いたというのなら、引用できるはずだなw
新しい言葉を追加せずに、理由を引用してみろ
新しい言葉を追加せずに、理由を引用してみろ
696デフォルトの名無しさん
2020/10/28(水) 23:01:45.79ID:K6dD4VVC 読む気なさそうだからなあw
すでに書いた後は知らない
すでに書いた後は知らない
697デフォルトの名無しさん
2020/10/28(水) 23:03:01.34ID:X2c0ql0Z な?引用できなかった。
698デフォルトの名無しさん
2020/10/29(木) 08:36:16.60ID:D7f8M1As 「こいつ分かってない」って言葉ってほんとうに便利よね。
それだけで
・自分が分かっている人間≠セと暗示できる
(でもあくまで暗示だから言質を取られる恐れもないw)
・相手より上の立場に立つ(という錯覚が)できる
わけだからさ。
それだけで
・自分が分かっている人間≠セと暗示できる
(でもあくまで暗示だから言質を取られる恐れもないw)
・相手より上の立場に立つ(という錯覚が)できる
わけだからさ。
699デフォルトの名無しさん
2020/10/29(木) 08:43:02.83ID:D7f8M1As ていうかシェルスクリプトで簡単にできるのは「マルチタスク」であって,
マルチタスクというのは非同期的な処理だから「非同期処理が簡単にできる」
という言説は正しいと言えるのかも知れないが(それでも違和感がある),
普通「マルチスレッド」といったときの同一プロセス内での複数スレッド処理に関しては
そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
外部コマンドを使ったりしないと実現できんのでは。
もしかしたら俺が知らんだけで
POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
というのが規定されている可能性もあるが,
ちょっと考えにくい。
マルチタスクというのは非同期的な処理だから「非同期処理が簡単にできる」
という言説は正しいと言えるのかも知れないが(それでも違和感がある),
普通「マルチスレッド」といったときの同一プロセス内での複数スレッド処理に関しては
そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
外部コマンドを使ったりしないと実現できんのでは。
もしかしたら俺が知らんだけで
POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
というのが規定されている可能性もあるが,
ちょっと考えにくい。
700デフォルトの名無しさん
2020/10/29(木) 10:29:24.34ID:YCEy/zhh シェルの内部コマンドでマルチスレッド化したほうが効率的なら勝手にやりゃいいんじゃねーの?
具体的にどのコマンドを対応させたいの?
もう誰か作ってんじゃないの?
具体的にどのコマンドを対応させたいの?
もう誰か作ってんじゃないの?
701デフォルトの名無しさん
2020/10/29(木) 10:45:18.65ID:XkZMBg2d >同一プロセス内での複数スレッド処理に関しては
>そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
>外部コマンドを使ったりしないと実現できんのでは
何を言いたいのかイミフ
複数のスレッドで作業を分割して同時並行で実行するが、終了は順番に受け取るとかめんどくさいだとかで普通にできるだろう。単にやる必要もないってとこだな
>POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
>というのが規定されている可能性もあるが,
>ちょっと考えにくい。
なんか純粋なUnix系のOSを理解してないっぽい。純粋部分はマルチスレッドはOSで「勝手に」はやらんだろう。CUIレベルだと必要なさげだからな。GUIなOSでは勝手にはあるけど
>そもそもCPUの機能を全部抽象化されてるようなシェルスクリプトでは
>外部コマンドを使ったりしないと実現できんのでは
何を言いたいのかイミフ
複数のスレッドで作業を分割して同時並行で実行するが、終了は順番に受け取るとかめんどくさいだとかで普通にできるだろう。単にやる必要もないってとこだな
>POSIXかどっかで「この動作はマルチ*スレッド*で処理されますよ」
>というのが規定されている可能性もあるが,
>ちょっと考えにくい。
なんか純粋なUnix系のOSを理解してないっぽい。純粋部分はマルチスレッドはOSで「勝手に」はやらんだろう。CUIレベルだと必要なさげだからな。GUIなOSでは勝手にはあるけど
702デフォルトの名無しさん
2020/10/29(木) 10:55:31.90ID:yfEeCvlS シェルスクリプトはHaskellと同じで自動的にマルチスレッド化するプログラミング
言語ですよ!
素晴らしいですよ!
ってこと?
言語ですよ!
素晴らしいですよ!
ってこと?
703デフォルトの名無しさん
2020/10/29(木) 10:57:33.10ID:XkZMBg2d >>700
イミフな部分は シェルの内部コマンド をマルチスレッドでという話か
内部コマンドっても単にコマンドを内包してるだけで、外部コマンドと変わらない(いや、変わらないと困る)もんだろと思ってるから、そういう読みはできなかった。なるほどね
ksh,zsh でも確かマルチスレッドではなかったような
i=0
command | while read j; do
i=$((i+j))
done
って、i がちゃんと変わるようにしてるのに(確かネストしても大丈夫だったような)。実現方法はなんだっけ
イミフな部分は シェルの内部コマンド をマルチスレッドでという話か
内部コマンドっても単にコマンドを内包してるだけで、外部コマンドと変わらない(いや、変わらないと困る)もんだろと思ってるから、そういう読みはできなかった。なるほどね
ksh,zsh でも確かマルチスレッドではなかったような
i=0
command | while read j; do
i=$((i+j))
done
って、i がちゃんと変わるようにしてるのに(確かネストしても大丈夫だったような)。実現方法はなんだっけ
704デフォルトの名無しさん
2020/10/29(木) 10:59:39.85ID:XkZMBg2d705デフォルトの名無しさん
2020/10/29(木) 11:25:48.02ID:yfEeCvlS でも、自動的にマルチスレッド化してC言語の64倍高速化する可能性も、ワンチャンあるって事ですよね?
試してみるバリューあるのでは?
試してみるバリューあるのでは?
706デフォルトの名無しさん
2020/10/29(木) 11:31:36.93ID:XkZMBg2d ないよw
C言語でもOpenMP使えば割と見た目簡単にできそうだが、OpenMPもそれほど流行ってない
プロセス=特に何か意識する必要もない
スレッド=常時何かを意識する必要がある
そう簡単な話ではない
Haskellとかはマルチスレッドでなきゃそもそも実現できない言語なのだからそれと比べても意味はないな。Haskell出したのはそう意味あるわけではないだろけど
C言語でもOpenMP使えば割と見た目簡単にできそうだが、OpenMPもそれほど流行ってない
プロセス=特に何か意識する必要もない
スレッド=常時何かを意識する必要がある
そう簡単な話ではない
Haskellとかはマルチスレッドでなきゃそもそも実現できない言語なのだからそれと比べても意味はないな。Haskell出したのはそう意味あるわけではないだろけど
707デフォルトの名無しさん
2020/10/29(木) 11:38:39.55ID:XkZMBg2d >そもそも実現できない言語なのだから
というわけでもないのね
出し受けがどでかいばかりじゃないからそりゃそうか
というわけでもないのね
出し受けがどでかいばかりじゃないからそりゃそうか
708デフォルトの名無しさん
2020/10/29(木) 11:49:45.20ID:yfEeCvlS シェルスクリプトがマルチ高速化のアビリティを持つのは否定しようがないファクトですよね?
709デフォルトの名無しさん
2020/10/29(木) 11:59:44.96ID:XkZMBg2d 小池とかのギャグに走ってるだけだろ
710デフォルトの名無しさん
2020/10/29(木) 15:03:10.28ID:8VEYobTG711デフォルトの名無しさん
2020/10/29(木) 15:45:57.37ID:i0HZBLVS 自己紹介がお上手
712デフォルトの名無しさん
2020/10/29(木) 22:21:37.37ID:87BKVwTm 並行・並列とプロセス・OSスレッド・軽量スレッドと同期・非同期の切り分けがごっちゃになってそう知らんけど
713デフォルトの名無しさん
2020/10/29(木) 22:49:07.55ID:yfEeCvlS バリューないですか?
714デフォルトの名無しさん
2020/10/29(木) 22:51:15.28ID:Ju4cpcAY 並行と並列はいまだにうまく使い分けられていない印象
正確な定義はどこかにあるんだろうが、人によって使われ方が違う
正確な定義はどこかにあるんだろうが、人によって使われ方が違う
715デフォルトの名無しさん
2020/10/29(木) 22:55:56.32ID:yfEeCvlS コンカレントとパラレルの違いはアジア人にはわかり辛いですからね。
キリスト教的考え方が普及していないからですね。
キリスト教的考え方が普及していないからですね。
716デフォルトの名無しさん
2020/10/29(木) 23:59:18.90ID:N/u/fZ2Q 並行と並列は使ってるCPUで決まる。
プログラムの書き方に違いはない。
プログラムの書き方に違いはない。
717デフォルトの名無しさん
2020/10/30(金) 17:02:49.47ID:ig1/qwB5 $@みたいな擬配列変数に格納されている値 一つ一つに対して
何か処理を行なう時に,別の変数を用意しない(使わない)方法って原理的に可能かな。
普通は
for args in $@; do
なにか処理
done
というスクリプトを組むと思うんだけど,
argsみたいな変数を使わずに済む方法があれば知りたい。
(シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
まあそれが「欠陥」かどうかは別として)
何か処理を行なう時に,別の変数を用意しない(使わない)方法って原理的に可能かな。
普通は
for args in $@; do
なにか処理
done
というスクリプトを組むと思うんだけど,
argsみたいな変数を使わずに済む方法があれば知りたい。
(シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
まあそれが「欠陥」かどうかは別として)
718デフォルトの名無しさん
2020/10/30(金) 17:39:03.81ID:mooUMZ8S なう
719デフォルトの名無しさん
2020/10/30(金) 18:20:41.07ID:vW0P/VrR PowerShellってKshとかPerlとかUnixのシェルやスクリプト言語を研究してベースにして作ったって、昔QuoraかどこかでMSの社員が答えてた
begin/endブロックとか、昔からUnix使ってればそのまま活かせる知識かなりある
begin/endブロックとか、昔からUnix使ってればそのまま活かせる知識かなりある
720デフォルトの名無しさん
2020/10/30(金) 18:25:55.93ID:sXVsY8+M721デフォルトの名無しさん
2020/10/30(金) 18:26:25.00ID:sXVsY8+M 他にも再起でできる
723デフォルトの名無しさん
2020/10/30(金) 18:30:51.05ID:sXVsY8+M > (シェルスクリプトは基本的には変数の無駄遣いを避けなきゃいけないので。
これはなんで? 変数名がぶつかるとかいう話?
これはなんで? 変数名がぶつかるとかいう話?
724デフォルトの名無しさん
2020/10/30(金) 18:33:22.92ID:sXVsY8+M ちなみにそれダブルクォートがあったほうがいい
for args in "$@"; do
なにか処理
done
もしくは逆に省略
for args; do
なにか処理
done
for args in "$@"; do
なにか処理
done
もしくは逆に省略
for args; do
なにか処理
done
725デフォルトの名無しさん
2020/10/30(金) 18:39:10.50ID:sXVsY8+M ちなみにそれダブルクォートがあったほうがいい
for args in "$@"; do
もしくは逆に省略
for args; do
for args in "$@"; do
もしくは逆に省略
for args; do
726デフォルトの名無しさん
2020/10/30(金) 18:39:31.11ID:sXVsY8+M 書き込みエラった
727717
2020/10/30(金) 19:07:22.75ID:ig1/qwB5 >>723
そういうことです。
Bashとかの独自機能に頼れば
局所変数を使えるみたいだけど
それを踏まえても,
例えばC言語よりは「変数の使い過ぎ」には
注意しなくちゃならない(よね?)
>>725
for文ってin省略したら$@を暗示するのマジか!
知らんかったけどちゃんとPOSIXでも規定されてたわ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_03
そういうことです。
Bashとかの独自機能に頼れば
局所変数を使えるみたいだけど
それを踏まえても,
例えばC言語よりは「変数の使い過ぎ」には
注意しなくちゃならない(よね?)
>>725
for文ってin省略したら$@を暗示するのマジか!
知らんかったけどちゃんとPOSIXでも規定されてたわ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_03
728デフォルトの名無しさん
2020/10/30(金) 19:15:49.74ID:sXVsY8+M > for文ってin省略したら$@を暗示するのマジか!
他にはgetoptsもそうだな。こっちは逆によく省略されるから
逆に指定できたのか!になると思うが
今は解決してるかもしれないが、$@が0個の時、
set -u状態で"$@"を参照するとエラーになるシェルがあったから
for args in "$@" じゃなくて省略してfor argsと書くようになった
他にはgetoptsもそうだな。こっちは逆によく省略されるから
逆に指定できたのか!になると思うが
今は解決してるかもしれないが、$@が0個の時、
set -u状態で"$@"を参照するとエラーになるシェルがあったから
for args in "$@" じゃなくて省略してfor argsと書くようになった
729デフォルトの名無しさん
2020/10/30(金) 19:32:14.84ID:yPjXBzu5 >>719
実際、PerlとBashに慣れてると、かなり書きやすいからな。
実際、PerlとBashに慣れてると、かなり書きやすいからな。
730デフォルトの名無しさん
2020/11/01(日) 17:25:31.39ID:xiHRYmfR 昔Perlやってて関数の$1とかいちいち変数に入れるのダサいよなぁと思っていたけど
シェルスクリプトをPOSIX縛りしてたらローカル変数なくて、そのまま$1とかでいいやって思ってたら
どうせ関数は小さく書くのは当たり前だから別に$1とかで問題ないと思うようになったな
外部からどういう引数で渡ってくるのか分かりづらいものはコメント書いてるけど
シェルスクリプトをPOSIX縛りしてたらローカル変数なくて、そのまま$1とかでいいやって思ってたら
どうせ関数は小さく書くのは当たり前だから別に$1とかで問題ないと思うようになったな
外部からどういう引数で渡ってくるのか分かりづらいものはコメント書いてるけど
731デフォルトの名無しさん
2020/11/01(日) 18:51:46.05ID:CuITjVo7 つきつめるとアセンブリで問題ないになる
732デフォルトの名無しさん
2020/11/01(日) 19:28:12.68ID:xiHRYmfR そうはならないよ。アセンブリは短く書こうとしてもどうしても長くなるから
「どうせ関数は小さく書くのは当たり前」が実現できない
「どうせ関数は小さく書くのは当たり前」が実現できない
733デフォルトの名無しさん
2020/11/01(日) 21:18:05.45ID:HWQKX8bn 名前の話なら、昔は名前が長いだけで容量が取られるから短くしていただけで、いまとなっては短いメリットはあまりない。
734デフォルトの名無しさん
2020/11/02(月) 10:41:13.59ID:n2BNqgKx たいてい編集するときに補完してくれるしね。
735デフォルトの名無しさん
2020/11/02(月) 11:22:36.19ID:n2BNqgKx poshを「POSIXシェルスクリプトがちゃんと動くか」というのを
確かめるのに使ってる人いる?
シェルスクリプトの妥当性をshellcheckみたいに静的じゃなく動的に検証したい。
確かめるのに使ってる人いる?
シェルスクリプトの妥当性をshellcheckみたいに静的じゃなく動的に検証したい。
736デフォルトの名無しさん
2020/11/02(月) 12:43:28.28ID:WhiKrslV737デフォルトの名無しさん
2020/11/02(月) 13:09:30.56ID:FhHZncje >>735
poshはバグが大量にある古いpdkshのフォークで
ろくにメンテナンスされてないので今も大量にバグが有る
https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=posh
poshはバグが大量にある古いpdkshのフォークで
ろくにメンテナンスされてないので今も大量にバグが有る
https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=posh
738デフォルトの名無しさん
2020/11/02(月) 13:11:03.65ID:FhHZncje POSIX準拠してるかを調べたいならdashを使ったほうが何倍もマシ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「特に中国は事態悪化を控えるべき」 日中対立巡りフランス高官言及 ★2 [蚤の市★]
- 【速報】 セブンイレブンの揚げ鶏が半額 223円 が 111円 本日のみ [お断り★]
- 【芸能】『バンダイナムコフェス』上海公演 日本人歌手・大槻マキが歌唱中に強制退場… 急に音を止められスタッフらしき人達に★2 [冬月記者★]
- 日本のアニソン歌唱中に強制中断 上海、照明落とされ音楽止まる [蚤の市★]
- 【野球】イチローが苦言「一発退場でいい」 現代野球の振る舞いにチクリ「あっちゃいけない」 審判は「威厳を保てなくなっている」 [冬月記者★]
- 中居正広、吹き始めた“追い風”フジ裁判で原告の主張に裁判官が難色、訴訟リスクも激減か 水面下では復帰への動きも活発化 [Ailuropoda melanoleuca★]
- 他サポ2025-273
- 他サポ2025-272
- 他サポ2025-274
- 他サポ2025-270
- 【STARDOM】スターダムワールド Part.33
- ジュビロ磐田を応援するにぃ~ vs 鳥栖
- 日テレ「高市首相の台湾有事発言は越えてはいけないライン。岡田が悪いは筋近い」政府関係者「踏み込みすぎ。明らかに答弁ミス」 [931948549]
- ふなっしょい🍬なのらああああああwww🏡
- 台湾人「えっ、待って!日本人は台湾台湾言ってて大好きっぽいのになんで全然台湾に来ないの…?」 [271912485]
- AI動画、限界突破。もうこれ実写だろ [485187932]
- 浜田雅功、おわる [329329848]
- 【悲報】たぬかな姫、流石に危険を感じたのか返金対応を開始
