シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「POSIX原理主義」「ユニケージ」「USP研究所」はPOSIXとUnixを曲解し
間違ったシェルスクリプトを広めている宗教です。洗脳されないようにしてください。
前スレ: シェルスクリプト総合 その36
https://mevius.5ch.net/test/read.cgi/tech/1614212414/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】11
https://mao.5ch.net/test/read.cgi/linux/1627507889/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
シェルスクリプト総合 その37
レス数が1000を超えています。これ以上書き込みはできません。
2021/10/05(火) 22:49:30.91ID:KsbWuyFp
954デフォルトの名無しさん
2022/12/16(金) 10:48:02.96ID:IL6/baQf >>950
誰が望むんだって、それただのラベルを使ったループの脱出じゃん
そういった拡張シェルを作りたい人もいるだろうし
お前は、将来の目をつもうとしてるのか?
シェルが改良されたら困ることでもあるのか?
まああるんだろうな。
新しいシェルを勉強したくない
誰が望むんだって、それただのラベルを使ったループの脱出じゃん
そういった拡張シェルを作りたい人もいるだろうし
お前は、将来の目をつもうとしてるのか?
シェルが改良されたら困ることでもあるのか?
まああるんだろうな。
新しいシェルを勉強したくない
955デフォルトの名無しさん
2022/12/16(金) 10:53:44.58ID:IL6/baQf > ちなみに俺はexitの後に>>"$0"でデバッグ中のログ取りしてる、別にログファイル作るのめんどいしバッファ再読み込みでエディタにすぐフィードバックが得られる
珍妙な事やってるな(笑)
珍妙な事やってるな(笑)
956デフォルトの名無しさん
2022/12/16(金) 10:56:32.82ID:Z4pvnD7F 面倒がまた増えるのか
957デフォルトの名無しさん
2022/12/16(金) 11:00:38.08ID:IL6/baQf >>951
単純にシェルスクリプトにシェルスクリプトとして解析できないものを埋め込んだら
コンパイルできないってだけだろ
頭固いよ(笑)
なんでシェルスクリプトのコンパイラは
どんなシェルスクリプトにも対応できなきゃ駄目だって
思っちゃうの?
【注意】以下のようなコードを書いたらコンパイルできません
って注意書きを書くだけでいいんだよ?
もっと柔軟な頭を作ろうね(笑)
単純にシェルスクリプトにシェルスクリプトとして解析できないものを埋め込んだら
コンパイルできないってだけだろ
頭固いよ(笑)
なんでシェルスクリプトのコンパイラは
どんなシェルスクリプトにも対応できなきゃ駄目だって
思っちゃうの?
【注意】以下のようなコードを書いたらコンパイルできません
って注意書きを書くだけでいいんだよ?
もっと柔軟な頭を作ろうね(笑)
958デフォルトの名無しさん
2022/12/16(金) 11:01:23.90ID:Z4pvnD7F インタプリタを軽くした方が筋がいいと思うわ
dashもなだかんだでコマンドライン編集や規格に従いたくて対話機能落とせてないし
どうせスクリプティングにしか使われないんだから、規格なんて無視すればいいのにと思う
dashもなだかんだでコマンドライン編集や規格に従いたくて対話機能落とせてないし
どうせスクリプティングにしか使われないんだから、規格なんて無視すればいいのにと思う
959デフォルトの名無しさん
2022/12/16(金) 11:06:09.35ID:IL6/baQf 機能を削減したら互換性がなくなるだろ
規格準拠じゃなくて、互換性のためにやってる
規格準拠じゃなくて、互換性のためにやってる
960デフォルトの名無しさん
2022/12/16(金) 12:14:08.72ID:uGaF/TrQ >>950
vi編集モードの指定がやけに細かいな
dashはemacsもヒストリもサポートしてるしむしろ対話シェルとして十分使える方で、普段対話使いしてる人もまあ居るかも
シェルスクリプトエンジンとしては、ttyに見せかけてvi/emacs風キーバインドを送って間接的にコマンドバッファ弄ったり、ヒストリ検索活用するシェルスクリプトが多いなら互換性の為に要るけど、要るかね?
対話用途の人も少なからず居るだろうからdashとしては出せなくても、名前を変えてシェルスクリプトエンジンとしてもっと特化した版があれば嬉しい
vi編集モードの指定がやけに細かいな
dashはemacsもヒストリもサポートしてるしむしろ対話シェルとして十分使える方で、普段対話使いしてる人もまあ居るかも
シェルスクリプトエンジンとしては、ttyに見せかけてvi/emacs風キーバインドを送って間接的にコマンドバッファ弄ったり、ヒストリ検索活用するシェルスクリプトが多いなら互換性の為に要るけど、要るかね?
対話用途の人も少なからず居るだろうからdashとしては出せなくても、名前を変えてシェルスクリプトエンジンとしてもっと特化した版があれば嬉しい
961デフォルトの名無しさん
2022/12/16(金) 16:12:38.11ID:nGRI2Vf+ シェルスクリプトなんてコンパイルしたところで外部呼び出しだらけだし大して速くもならんでしょ
恩恵あるのはビルトインだけでループぐるぐる回すベンチくらい
恩恵あるのはビルトインだけでループぐるぐる回すベンチくらい
962デフォルトの名無しさん
2022/12/16(金) 16:15:48.57ID:IL6/baQf >>960
> vi編集モードの指定がやけに細かいな
もしかしてPOSIXが仕様を決めたから
dashはその通りに作ってるとか思ってる?
vi編集モードとかemacsとか、それを最初にやったのはkshなの
dashやbashや他のシェルはそれを真似しただけ
POSIXはkshやdashやbashで移植性があるものを文書化しただけなの
> 対話用途の人も少なからず居るだろうからdashとしては出せなくても、
> 名前を変えてシェルスクリプトエンジンとしてもっと特化した版があれば嬉しい
自分で作ればいいじゃん?POSIXに準拠してないシェルを作ってもいいんだよ。
dashはPOSIXに準拠するという方針なだけ
機能を減らすことで何が嬉しいのか知らんけど/bin/shとしては使えなくなるだろうね。
別にbashをインストールしなきゃ対話的に使えないOSになってしまう
> vi編集モードの指定がやけに細かいな
もしかしてPOSIXが仕様を決めたから
dashはその通りに作ってるとか思ってる?
vi編集モードとかemacsとか、それを最初にやったのはkshなの
dashやbashや他のシェルはそれを真似しただけ
POSIXはkshやdashやbashで移植性があるものを文書化しただけなの
> 対話用途の人も少なからず居るだろうからdashとしては出せなくても、
> 名前を変えてシェルスクリプトエンジンとしてもっと特化した版があれば嬉しい
自分で作ればいいじゃん?POSIXに準拠してないシェルを作ってもいいんだよ。
dashはPOSIXに準拠するという方針なだけ
機能を減らすことで何が嬉しいのか知らんけど/bin/shとしては使えなくなるだろうね。
別にbashをインストールしなきゃ対話的に使えないOSになってしまう
963デフォルトの名無しさん
2022/12/16(金) 16:18:55.94ID:IL6/baQf >>961
×シェルスクリプトなんてコンパイルしたところで外部呼び出しだらけだし大して速くもならんでしょ
○外部呼び出しだらけのシェルスクリプトはコンパイルしたところで速くならない
他の言語のようにビルトインだけで作ればいいんだよ
作れるわけがない?
作れない理由を潰せば作れるよね?
シェルの将来としてそのようなシェルがあってもいい
×シェルスクリプトなんてコンパイルしたところで外部呼び出しだらけだし大して速くもならんでしょ
○外部呼び出しだらけのシェルスクリプトはコンパイルしたところで速くならない
他の言語のようにビルトインだけで作ればいいんだよ
作れるわけがない?
作れない理由を潰せば作れるよね?
シェルの将来としてそのようなシェルがあってもいい
964デフォルトの名無しさん
2022/12/16(金) 16:53:39.13ID:OmUfbGxN >>961
それを言ってはおしまいだけど、IFS決め打ちって文脈からパースについて楽できないかって話ね
しかし複合文は先読みでエラー出せることから分かるように、環境の更新や副作用起こす展開をしないループなら既に手抜きは可
長大なベタ書きならIFS決め打ちで結構削れるだろうが、そんなケチくさい努力に見合うとは思わない
それを言ってはおしまいだけど、IFS決め打ちって文脈からパースについて楽できないかって話ね
しかし複合文は先読みでエラー出せることから分かるように、環境の更新や副作用起こす展開をしないループなら既に手抜きは可
長大なベタ書きならIFS決め打ちで結構削れるだろうが、そんなケチくさい努力に見合うとは思わない
965デフォルトの名無しさん
2022/12/16(金) 17:10:31.82ID:IL6/baQf966デフォルトの名無しさん
2022/12/16(金) 17:23:00.10ID:0LHDM9/j まああれだね
「POSIXが変なことを考えていて、コンパイラとかを作ろうとしてる」
と勘違いしているアホが居る
POSIXがどういうものかを理解していれば
「POSIXはコンパイラを作ろうとしているシェルがあることを知っていて
そういったシェルを将来作れるように考慮している」
が正しいとわかる
「POSIXが変なことを考えていて、コンパイラとかを作ろうとしてる」
と勘違いしているアホが居る
POSIXがどういうものかを理解していれば
「POSIXはコンパイラを作ろうとしているシェルがあることを知っていて
そういったシェルを将来作れるように考慮している」
が正しいとわかる
967デフォルトの名無しさん
2022/12/16(金) 23:21:48.19ID:KwA6ycaA じゃあ後追いでええのにな。
様子や実装具合を見ながら。
どうせ普及せんのやろし。w
様子や実装具合を見ながら。
どうせ普及せんのやろし。w
968デフォルトの名無しさん
2022/12/16(金) 23:35:49.94ID:Out/cb9o969デフォルトの名無しさん
2022/12/17(土) 13:59:03.04ID:yWXMz5Ex 一部だけ認めるのでもまだ早い。
大半が実装してから共通項を整理するくらいでいい。
大半が実装してから共通項を整理するくらいでいい。
970デフォルトの名無しさん
2022/12/17(土) 14:13:00.20ID:zTx/vduP >>969
やっぱり理解が追いついてないか(苦笑)
1. シェルスクリプト用のコンパイラを作りました
2. この時点でPOSIX準拠になっていないといけない
3. 大半が実装してから共通項を整理する
大半が実装するまでの間、POSIX違反になっちゃいけないのよ
意味わかる?POSIX違反なコンパイラを作るな!って言われるでしょ
POSIXが正しいシェル間違ったシェルを決めるのは傲慢
POSIXは決まった以外ならどんなシェルでも許さなきゃいけない
やっぱり理解が追いついてないか(苦笑)
1. シェルスクリプト用のコンパイラを作りました
2. この時点でPOSIX準拠になっていないといけない
3. 大半が実装してから共通項を整理する
大半が実装するまでの間、POSIX違反になっちゃいけないのよ
意味わかる?POSIX違反なコンパイラを作るな!って言われるでしょ
POSIXが正しいシェル間違ったシェルを決めるのは傲慢
POSIXは決まった以外ならどんなシェルでも許さなきゃいけない
971デフォルトの名無しさん
2022/12/17(土) 14:13:48.77ID:zTx/vduP 訂正
POSIXは決まったこと以外であれば、どんなシェルでも許さなきゃいけない
POSIXは決まったこと以外であれば、どんなシェルでも許さなきゃいけない
972デフォルトの名無しさん
2022/12/17(土) 14:23:48.31ID:zTx/vduP 「大半が実装するまでPOSIXでは認めない」
これが傲慢な考えだってわからないのは本当にヤバイよ
POSIXがルールになってるじゃん
「大半が実装しなくてもPOSIXはそれを禁止することはない」
これが傲慢な考えだってわからないのは本当にヤバイよ
POSIXがルールになってるじゃん
「大半が実装しなくてもPOSIXはそれを禁止することはない」
973デフォルトの名無しさん
2022/12/17(土) 15:41:00.83ID:fCc6f5AR974デフォルトの名無しさん
2022/12/17(土) 15:55:58.46ID:3o3z3wxM for x of outerloop [in word+]
的な感じか
ofは適当だけど、既に予約されてて意味の通るトークンが流用できれば望ましい
的な感じか
ofは適当だけど、既に予約されてて意味の通るトークンが流用できれば望ましい
975デフォルトの名無しさん
2022/12/17(土) 16:24:44.82ID:dohNO5X8976デフォルトの名無しさん
2022/12/17(土) 16:25:41.46ID:dohNO5X8 どういう文法にするかはシェルを作っている人たちが考えることであって
「POSIXは仕様を考えません」ってスタンスは明確になっている
「POSIXは仕様を考えません」ってスタンスは明確になっている
977デフォルトの名無しさん
2022/12/17(土) 16:25:59.84ID:nev2pk2m まだ試してないけどfor x ofの時点でシンタックスエラー吐くのが普通だろうし、自由に選べるはず
C-style((..))のような拡張とも被らない
C-style((..))のような拡張とも被らない
978デフォルトの名無しさん
2022/12/17(土) 16:38:44.90ID:kO3DzgkN979デフォルトの名無しさん
2022/12/17(土) 16:39:51.81ID:fCc6f5AR >>978
おつおつ
おつおつ
980デフォルトの名無しさん
2022/12/17(土) 17:24:25.53ID:f0H2QhnO >>978
おつ
おつ
981デフォルトの名無しさん
2022/12/18(日) 11:36:21.55ID:X5nUMPIw >>973
forに足すなら浮いてる終端記号
in : In
を拡張するのが確かにスマートなんだけど
言語全体で見るとwhile/untilに使えないのが不自然
for_clause : For name do_group
| For name sequential_sep do_group
| For name linebreak in sequential_sep do_group
| For name linebreak in wordlist sequential_sep do_group
;
while_clause : While compound_list do_group
;
until_clause : Until compound_list do_group
;
do_group : Do compound_list Done
;
do_groupに足したいところだが、compound_listが何でもアリだから曖昧になる、末尾:は非コマンド名と予約しても現状通るし、do : ; done すらイディオム、もちろん今のうちから予約しておくのは良い事
ただし意味論的にキモい事になる(label:がwhile行とズレる)
while ...
do label:
...
done
ので、ラベルのようなあっても無くても困らないものでなく、もっと重要な拡張の為に取っておくべき
forに足すなら浮いてる終端記号
in : In
を拡張するのが確かにスマートなんだけど
言語全体で見るとwhile/untilに使えないのが不自然
for_clause : For name do_group
| For name sequential_sep do_group
| For name linebreak in sequential_sep do_group
| For name linebreak in wordlist sequential_sep do_group
;
while_clause : While compound_list do_group
;
until_clause : Until compound_list do_group
;
do_group : Do compound_list Done
;
do_groupに足したいところだが、compound_listが何でもアリだから曖昧になる、末尾:は非コマンド名と予約しても現状通るし、do : ; done すらイディオム、もちろん今のうちから予約しておくのは良い事
ただし意味論的にキモい事になる(label:がwhile行とズレる)
while ...
do label:
...
done
ので、ラベルのようなあっても無くても困らないものでなく、もっと重要な拡張の為に取っておくべき
982デフォルトの名無しさん
2022/12/18(日) 13:49:22.73ID:2VP7BjPM > もちろん今のうちから予約しておくのは良い事
勝手に予約しないでください
勝手に予約しないでください
983デフォルトの名無しさん
2022/12/18(日) 15:19:58.34ID:dtHdvs65 コマンドがファイルでありえる限りヌル文字と/以外なんでもありだし、本当に任意コマンドを受け取って呼ぶならcommand, type, envとかで全部問い合わせるか、クォートする必要があるな
ところで任意文字列のコマンドが既にダメなのは今更な事に気付いた、例えば
✗com=mand arg1 arg2…
✔\com=mand arg1 arg2...
これを流用して意味を為さない
=label
なんてどうかと思ったが、bash/dashはcommand not found返しやがる
ところで任意文字列のコマンドが既にダメなのは今更な事に気付いた、例えば
✗com=mand arg1 arg2…
✔\com=mand arg1 arg2...
これを流用して意味を為さない
=label
なんてどうかと思ったが、bash/dashはcommand not found返しやがる
984デフォルトの名無しさん
2022/12/18(日) 15:31:36.28ID:dtHdvs65 不用心にパス区切へ使われがちな:はなるべく避けてるけど、名前空間の表現なんかでpkg:nameくらいは使いたい
末尾:という制限付きならまあ
とりあえずbashは関数も実行ファイルも普通に作れるしガン無視の模用、実効性は疑問
末尾:という制限付きならまあ
とりあえずbashは関数も実行ファイルも普通に作れるしガン無視の模用、実効性は疑問
985デフォルトの名無しさん
2022/12/18(日) 15:46:15.04ID:ZsJ4rXOo 個々人が(覚えてたら)一応リスペクトしておくか、の積み重ねじゃね
986デフォルトの名無しさん
2022/12/18(日) 16:06:25.57ID:ZsJ4rXOo >>983
=は他のコンテキストでクオートする必要がないところが特異
任意文字がダメなのはコントロールオペレータやメタ文字、予約語もそう
当たり前だから忘れがちだけど、空白>|($&cを含んだコマンドを呼ぶならクオートする
=は他のコンテキストでクオートする必要がないところが特異
任意文字がダメなのはコントロールオペレータやメタ文字、予約語もそう
当たり前だから忘れがちだけど、空白>|($&cを含んだコマンドを呼ぶならクオートする
987デフォルトの名無しさん
2022/12/18(日) 16:48:20.92ID:X5nUMPIw988デフォルトの名無しさん
2022/12/18(日) 17:18:29.27ID:X5nUMPIw 一応opengroupのShell Command Languageには
The words that are recognized as variable assignments or redirections according to Shell Grammar Rules are saved for processing in steps 3 and 4.
と記載があるので、variable assignmentとして認識できないなら、コマンドとして検索すると間接的に示唆してるな
もちろん期待すべきではないが
The words that are recognized as variable assignments or redirections according to Shell Grammar Rules are saved for processing in steps 3 and 4.
と記載があるので、variable assignmentとして認識できないなら、コマンドとして検索すると間接的に示唆してるな
もちろん期待すべきではないが
989デフォルトの名無しさん
2022/12/18(日) 17:34:17.53ID:hzU9uYVT 名前が空になるのは大抵eval "$var=$val"のようなコードでのバリデーション不足だから、エラーにしてくれれば親切なのに
残念
残念
990デフォルトの名無しさん
2022/12/18(日) 18:33:19.40ID:KWJCN7PT 挙動は揃ってるっぽいな
こんな時の為の明示的なunspecified
汚いから連想配列使えって?標準を示してくれればな
こんな時の為の明示的なunspecified
汚いから連想配列使えって?標準を示してくれればな
991デフォルトの名無しさん
2022/12/18(日) 19:25:00.97ID:X5nUMPIw 親切にエラーを投げても構わないよ、って意図はしばしば察せられるね
正直とても分かりにくいが
変数はダメ文字多いけど、頑張るならx$VARとか
正直とても分かりにくいが
変数はダメ文字多いけど、頑張るならx$VARとか
992デフォルトの名無しさん
2022/12/18(日) 21:30:49.34ID:TnNkrrc4 >>989-990
それがBourne Shellの動作だからね
POSIXはそれを明確化しただけ
さっきからずっとPOSIXに文句を言っているようだが
POSIXにごちゃごちゃ言うようなないようじゃないよ
そんなの意味ないからbashやkshの開発者に
変更してくれって言わないとだめ
それがBourne Shellの動作だからね
POSIXはそれを明確化しただけ
さっきからずっとPOSIXに文句を言っているようだが
POSIXにごちゃごちゃ言うようなないようじゃないよ
そんなの意味ないからbashやkshの開発者に
変更してくれって言わないとだめ
993デフォルトの名無しさん
2022/12/18(日) 21:32:32.95ID:TnNkrrc4994デフォルトの名無しさん
2022/12/18(日) 21:38:48.78ID:TnNkrrc4 >>990
シェルスクリプトに連想配列はないよ
シェルスクリプトに連想配列はないよ
995デフォルトの名無しさん
2022/12/18(日) 22:49:12.26ID:1Tc0QAtx 1レスで書いてよ
996デフォルトの名無しさん
2022/12/19(月) 00:58:54.84ID:DF8VTccp997デフォルトの名無しさん
2022/12/19(月) 02:05:36.38ID:8Bk5E6e1 ここに居る人は多かれ少なかれ利害関係者なわけだけど、その意識が欠けてる感じがする
俺は物言うエンドユーザー(いわゆるクレーマー)だけど
ニュースグループ、メーリス、バグレポートに直接クレーム付けるのが憚られるインフォーマルな話題やネタは大体ここから拾ってたりする
おまえらエッジケース見付けるのうまいしな
少なくともchetは丁寧に返信してくれるよ、他は知らん
俺は物言うエンドユーザー(いわゆるクレーマー)だけど
ニュースグループ、メーリス、バグレポートに直接クレーム付けるのが憚られるインフォーマルな話題やネタは大体ここから拾ってたりする
おまえらエッジケース見付けるのうまいしな
少なくともchetは丁寧に返信してくれるよ、他は知らん
998デフォルトの名無しさん
2022/12/19(月) 02:10:26.67ID:sparn4DJ なんか大した実績もないクソ雑魚が
いきがってるなw
いきがってるなw
999デフォルトの名無しさん
2022/12/19(月) 02:16:02.35ID:8Bk5E6e1 >>998
まあ実績はないけど、言わんで困るのも俺だしな
まあ実績はないけど、言わんで困るのも俺だしな
1000デフォルトの名無しさん
2022/12/19(月) 02:21:06.52ID:sparn4DJ まあちゃんと日本語話せるようになれよw
お前の日本語は意味不明で誰も理解できんからwww
お前の日本語は意味不明で誰も理解できんからwww
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 439日 3時間 31分 36秒
新しいスレッドを立ててください。
life time: 439日 3時間 31分 36秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に [ぐれ★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 中国人「『日本は危ないから行かないように』と言われたが、日本に来たらとても安全だった」 [お断り★]
- 石破前総理「どうすれば台湾有事にならないかを考えるべき」★2 [1ゲットロボ★]
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- フィフィ「外国人だろうが日本人だろうが反日は要らんのよ、この国に…自分にとって住みやすい国に行け。」 [856698234]
- 【高市悲報】トランプおやびん「偉大な指導者である習近平首席、米国は中国にとっての台湾問題の重要性を理解しています」 [115996789]
- 【速報】足立ひき逃げ犯、精神病持ちだった [329271814]
- 【速報】高市「アタシぜっったい謝らないからッ!!」→中国焦る [308389511]
- 正直、中国民の反日感情より、国内の反中感情の方がヤバくないか?ヤフコメ、X、TikTok、YouTube…どこ見てもヘイトが溢れてる [838847604]
