シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「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
レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/10/05(火) 22:49:30.91ID:KsbWuyFp
875デフォルトの名無しさん
2022/10/16(日) 02:26:07.88ID:JzUhNpEc まあブーブーいうなよ あんたもどうせそのPOSIXが標準化に失敗したtarを使ってるんだろう?
876デフォルトの名無しさん
2022/10/16(日) 22:42:44.89ID:ZGQtChBm 少なくとも、macOSはPOSIX準拠ってことになってるけど使えない機能あるけどな。
877デフォルトの名無しさん
2022/10/17(月) 12:18:15.97ID:lr6vgl7q >>874
> おろかものめ。Pythonやライブラリを使うとソフトウェアの持続性が短くなる
> シェルスクリプトはメンテンスフリーだ。
セキュリティホールあきっぱなしの /bin/sh 実装でもスクリプトが実行できるガバガバ運用ってだけでしょ。
メンテナンスせずに動き続けるって事こそが危険だから Python は下位バージョン切り捨ててるわけで。
> おろかものめ。Pythonやライブラリを使うとソフトウェアの持続性が短くなる
> シェルスクリプトはメンテンスフリーだ。
セキュリティホールあきっぱなしの /bin/sh 実装でもスクリプトが実行できるガバガバ運用ってだけでしょ。
メンテナンスせずに動き続けるって事こそが危険だから Python は下位バージョン切り捨ててるわけで。
878デフォルトの名無しさん
2022/10/17(月) 20:48:54.25ID:gqwh4i+l 本当に何十年も使われることが想定されるものを作っているならいいけど、なんとなく「寿命長い方がいいよね」程度の理由でPOSIXに拘って結局暫くすれば使われなくなるなら結果的にかなり生産性悪い作業でしかない
879デフォルトの名無しさん
2022/10/17(月) 21:48:02.26ID:kiowcDiZ880デフォルトの名無しさん
2022/10/17(月) 23:36:35.68ID:ih01gahk そんなことなら、Perl5が必要充分以上やな。
881デフォルトの名無しさん
2022/10/17(月) 23:40:16.19ID:lr6vgl7q >>879
OS アップデートで動かなくなる状況の場合はカーネル/libcがらみで dash も影響受ける。
OS じゃなくて言語・インタプリタのアップデートの場合も過去の失敗から java やら python は複数
バージョンインストールするようになってる。 /usr/bin/python3.6 とか入ってるだろ?
/bin/sh が POSIX 非互換なのか dash なのか bash なのかは非決定的なのにいつまでもシェバン
に /bin/sh って書く方がおかしい。
メンテナンス性の悪い POSIX 互換で書くよりシェバンに /bin/bash って書いてメンテナンス性良い/
簡潔なスクリプトを書くべき。 難読な POSIX 準拠のスクリプトを素人プログラマーが下手に
修正してエンバグするほうが余程リスクが高いわ。
OS アップデートで動かなくなる状況の場合はカーネル/libcがらみで dash も影響受ける。
OS じゃなくて言語・インタプリタのアップデートの場合も過去の失敗から java やら python は複数
バージョンインストールするようになってる。 /usr/bin/python3.6 とか入ってるだろ?
/bin/sh が POSIX 非互換なのか dash なのか bash なのかは非決定的なのにいつまでもシェバン
に /bin/sh って書く方がおかしい。
メンテナンス性の悪い POSIX 互換で書くよりシェバンに /bin/bash って書いてメンテナンス性良い/
簡潔なスクリプトを書くべき。 難読な POSIX 準拠のスクリプトを素人プログラマーが下手に
修正してエンバグするほうが余程リスクが高いわ。
882デフォルトの名無しさん
2022/10/17(月) 23:58:11.53ID:HOU4mi8w リスクを恐れてノーベルプライズを獲れるだろうか。
883デフォルトの名無しさん
2022/10/18(火) 15:29:29.95ID:4FAzKYYu 2045年に特異点、政府のムーンショット計画が2050年だからそこまで動けばいいや
884デフォルトの名無しさん
2022/10/19(水) 19:49:59.67ID:xl7PC10Z いま作ってるシェルが糞コード過ぎて恥ずかしいからさっさとこの現場から離任したいわ
885デフォルトの名無しさん
2022/10/19(水) 20:23:40.42ID:if0dD1Eh へー、シェル作ってるんだw
そりゃクソな現場にふさわしいクソな人材だねぇ
そりゃクソな現場にふさわしいクソな人材だねぇ
886デフォルトの名無しさん
2022/10/21(金) 23:00:45.82ID:TEKOXySm >>426が書いてるように、
bashですらスクリプトファイルの逐次read中にスクリプト実行までやるのは不思議だわ
bashですらスクリプトファイルの逐次read中にスクリプト実行までやるのは不思議だわ
887デフォルトの名無しさん
2022/10/22(土) 00:38:46.67ID:w0vCAaPV >>"$0"ができて嬉しいこと?
888デフォルトの名無しさん
2022/10/22(土) 01:01:08.46ID:w0vCAaPV 実行時にコード生成してそれを実行するなら
runtime_code_generator |bash
で済むしなあ
入出力を<>(rw)で開いて0&>1でウロボロス実行方式を閃いた
何でもいいから非同期バッファ(cat &とか)挟まないと自分が書きにやって来る(書いてるから来ない)のを待たされてデッドロックしそうだが
runtime_code_generator |bash
で済むしなあ
入出力を<>(rw)で開いて0&>1でウロボロス実行方式を閃いた
何でもいいから非同期バッファ(cat &とか)挟まないと自分が書きにやって来る(書いてるから来ない)のを待たされてデッドロックしそうだが
889デフォルトの名無しさん
2022/10/22(土) 01:01:42.39ID:w0vCAaPV よし、要らんな
890デフォルトの名無しさん
2022/10/22(土) 01:20:59.11ID:ZKLK2IoP echo 成功を祈るだべぇ >|"$0"
891デフォルトの名無しさん
2022/10/24(月) 09:33:19.96ID:P2J4rO7b パスワード生成
cat /dev/random | tr -dc '[:alnum:]' | fold -w 16 | grep '[[:digit:]]' | grep '[[:upper:]]' | grep '[[:lower:]]' | head -n 1
cat /dev/random | tr -dc '[:alnum:]' | fold -w 16 | grep '[[:digit:]]' | grep '[[:upper:]]' | grep '[[:lower:]]' | head -n 1
892デフォルトの名無しさん
2022/10/24(月) 13:21:29.09ID:LufpLpQ3 >>891
そんなアホみたいなことしてないでmkpasswd使え
そんなアホみたいなことしてないでmkpasswd使え
893デフォルトの名無しさん
2022/10/31(月) 23:10:15.52ID:Sg749A95 "c:\test\e01"
の文字列をkshで書く際に
"c:\\test\\e01"
とすると"c:\test□01"と化けてしまうのですが、
どう記載したら良いでしょうか。
の文字列をkshで書く際に
"c:\\test\\e01"
とすると"c:\test□01"と化けてしまうのですが、
どう記載したら良いでしょうか。
894デフォルトの名無しさん
2022/10/31(月) 23:54:05.96ID:8d/Em0+h そもそもコマンドは何?勝手にc風エスケープ受け付けるコマンドと仮定するけど
\tにはちゃんと\効いてるのに、よりマイナーな\eをesc文字と解釈するのが気持ち悪いな
とりあえず'(シングルクオート)でそのまま囲めば?
\tにはちゃんと\効いてるのに、よりマイナーな\eをesc文字と解釈するのが気持ち悪いな
とりあえず'(シングルクオート)でそのまま囲めば?
895デフォルトの名無しさん
2022/11/01(火) 00:00:32.67ID:XWm3usXf 初歩的過ぎ、あるいはkshでは違ったらごめんだけど
"\\"はコマンド関係無しにシェルが\と解釈する
後はコマンドが解釈する
という前提はok?
"\\"はコマンド関係無しにシェルが\と解釈する
後はコマンドが解釈する
という前提はok?
896デフォルトの名無しさん
2022/11/05(土) 13:54:01.79ID:tvTqkbo5 "#!"機能の有無の検出って、シェルでどう書くんだっけ?
897デフォルトの名無しさん
2022/11/05(土) 13:57:55.08ID:0q4aURph "#!"機能の有無ってなんだよ?
898デフォルトの名無しさん
2022/11/05(土) 13:58:30.81ID:0q4aURph #!/usr/bin/perl の場合を例にして言ってみて
899デフォルトの名無しさん
2022/11/05(土) 14:14:53.38ID:0pCmU1l8 >>896
実際に呼んでみれば?
echo '#! /usr/bin/echo true' >hash-bang-p
chmod u+x hash-bang-p
if ./hash-bang-p |col1; then
# assume implicit invocation available.
else
# don't rely on the mechanism,
# explicitly specify interpreter.
fi
的な感じで
実際に呼んでみれば?
echo '#! /usr/bin/echo true' >hash-bang-p
chmod u+x hash-bang-p
if ./hash-bang-p |col1; then
# assume implicit invocation available.
else
# don't rely on the mechanism,
# explicitly specify interpreter.
fi
的な感じで
900デフォルトの名無しさん
2022/11/05(土) 14:20:51.30ID:0pCmU1l8 ごめんcol1じゃダメそうだわ
機構が有効なら./hash-bang-pは文字列を返して、そうでなければ返さない(例:sh ./hash-bang-p)
事に注意してよしなに
機構が有効なら./hash-bang-pは文字列を返して、そうでなければ返さない(例:sh ./hash-bang-p)
事に注意してよしなに
901896
2022/11/05(土) 14:29:19.32ID:l9nmx+fu902デフォルトの名無しさん
2022/11/05(土) 14:33:42.19ID:0q4aURph SVR2なんか今時使うの?
もうとっくの昔にサポート切れで脆弱性とかあるのでは?
もうとっくの昔にサポート切れで脆弱性とかあるのでは?
903デフォルトの名無しさん
2022/11/05(土) 14:43:53.71ID:0pCmU1l8 >>901
#!機構で呼んでくれないけど、#!指定のインタプリタを呼びたいケース
例えば実装スクリプト言語が不明/システムにより異なる場合等
とりあえずパースすれば?
`echo "$(head -1 unknown-script)" |tr -d '!'#`
的な感じで
汚ないというのは、まあ容赦してくれ
#!機構で呼んでくれないけど、#!指定のインタプリタを呼びたいケース
例えば実装スクリプト言語が不明/システムにより異なる場合等
とりあえずパースすれば?
`echo "$(head -1 unknown-script)" |tr -d '!'#`
的な感じで
汚ないというのは、まあ容赦してくれ
904デフォルトの名無しさん
2022/11/05(土) 14:45:39.00ID:0pCmU1l8 伝統的にスクリプト実装だけど、効率のためバイナリに置き換えられてる場合も多々あるので、fileの結果を見た方がいいかも
905デフォルトの名無しさん
2022/11/05(土) 14:52:27.83ID:0pCmU1l8 分かりにくいと思うので補足>>903
例えばunknown-scriptが先の./hash-bang-pなら
中のコマンド置換は文字列
/usr/bin/echo true
を返す
外のコマンド置換でこれがコマンドとして実行され
true
が返る(はず)
例えばunknown-scriptが先の./hash-bang-pなら
中のコマンド置換は文字列
/usr/bin/echo true
を返す
外のコマンド置換でこれがコマンドとして実行され
true
が返る(はず)
906デフォルトの名無しさん
2022/11/05(土) 14:55:56.67ID:0q4aURph System V Release 2は1984年4月にリリースされたって書いてあるんだが
38年前かー。ファミコンのパックマンの発売年じゃん。
初代スーパーマリオの一年前のUNIX
そんなの使ってるなんてなんか可哀想w
38年前かー。ファミコンのパックマンの発売年じゃん。
初代スーパーマリオの一年前のUNIX
そんなの使ってるなんてなんか可哀想w
907デフォルトの名無しさん
2022/11/05(土) 14:58:08.92ID:0q4aURph >>903
SVR2ならBourne Shellだからそれ動かないんじゃね?
SVR2ならBourne Shellだからそれ動かないんじゃね?
909デフォルトの名無しさん
2022/11/05(土) 15:10:30.65ID:0q4aURph910デフォルトの名無しさん
2022/11/05(土) 15:15:49.65ID:CaYWlfee 単に$?を見るのはダメだったの?
本質はOSがshebangをサポートしてるかどうかの判定だから、やってみて戻り値見る行為以外ないんじゃないかな
>>903みたいのはzshが内部でexecve()の失敗後にやってるけど、判定が主題ならそのconfigureのやりかたを見てみたいな
本質はOSがshebangをサポートしてるかどうかの判定だから、やってみて戻り値見る行為以外ないんじゃないかな
>>903みたいのはzshが内部でexecve()の失敗後にやってるけど、判定が主題ならそのconfigureのやりかたを見てみたいな
911デフォルトの名無しさん
2022/11/05(土) 15:18:31.87ID:0pCmU1l8 >>907
そうか、というか仮に動いても正しく動く保証は全く無いな…
長さ制限を除いても、#!機構のパースは一般にシェル言語と全く関係がないので(特に引数やクオート)
例えばlinuxの#!機構は引数は一つまでなので
#! /usr/bin/env -Scommand\_arg1\_arg2
みたいなものが書かれる
perl等も(独自の)似たようなワークアラウンド機構を持ってたはず
そのままシェル言語として通用する文字列が得られるのは
#! /path/to/command alnumonly
くらいな気がする
そうか、というか仮に動いても正しく動く保証は全く無いな…
長さ制限を除いても、#!機構のパースは一般にシェル言語と全く関係がないので(特に引数やクオート)
例えばlinuxの#!機構は引数は一つまでなので
#! /usr/bin/env -Scommand\_arg1\_arg2
みたいなものが書かれる
perl等も(独自の)似たようなワークアラウンド機構を持ってたはず
そのままシェル言語として通用する文字列が得られるのは
#! /path/to/command alnumonly
くらいな気がする
912デフォルトの名無しさん
2022/11/05(土) 15:24:38.61ID:0q4aURph その頃のUNIXだったら/bin/shじゃなくて/usr/bin/shとかも
考慮しないといけないのでは?
考慮しないといけないのでは?
913デフォルトの名無しさん
2022/11/05(土) 15:40:46.08ID:EHQev3W6914デフォルトの名無しさん
2022/11/05(土) 15:43:33.14ID:0q4aURph915デフォルトの名無しさん
2022/11/05(土) 17:48:14.73ID:/GinkP0r 変な工夫を凝らして変死するのが最も厄介
>>899
必要かどうかはさておき少しだけ読みやすく
(hash-bang-p)
#!/usr/bin/true
false # or exit 1
if ./hash-bang-p; then
...
>>899
必要かどうかはさておき少しだけ読みやすく
(hash-bang-p)
#!/usr/bin/true
false # or exit 1
if ./hash-bang-p; then
...
916896
2022/11/05(土) 21:40:31.60ID:/vhGZAk/ >>910
perl5のConfigure出てきた
github.com/Perl/perl5/blob/blead/Configure
これのsharpbangって変数のあたり
でも、これ自体はmetaconfigが自動生成したやつだしな…
perl5のConfigure出てきた
github.com/Perl/perl5/blob/blead/Configure
これのsharpbangって変数のあたり
でも、これ自体はmetaconfigが自動生成したやつだしな…
918デフォルトの名無しさん
2022/11/05(土) 22:51:42.45ID:CaYWlfee metaconfigのソース見ると実際にスクリプトを実行して戻り値で判定してるね
919896
2022/11/06(日) 16:23:58.52ID:6IpVpf3a920デフォルトの名無しさん
2022/11/06(日) 16:29:03.77ID:JyiC8cnE レトロゲーム本体がないのにどうやって動作確認するの?
921デフォルトの名無しさん
2022/11/08(火) 22:58:25.15ID:6COcByZR UNIX板って機能してるのかな
見ておいでよ
見ておいでよ
922デフォルトの名無しさん
2022/11/10(木) 16:24:36.94ID:klH1mu/P UNIX板は過疎板
923デフォルトの名無しさん
2022/11/10(木) 16:54:57.94ID:eyva6wLj macOSはUNIXだけど専用板あるし
UNIXなんてもう使われてない
BSDももうおしまい
UNIXなんてもう使われてない
BSDももうおしまい
924デフォルトの名無しさん
2022/11/10(木) 18:44:31.43ID:Tf4g3bvk ユーザにとってはな
925デフォルトの名無しさん
2022/11/10(木) 19:50:54.97ID:eyva6wLj926デフォルトの名無しさん
2022/11/11(金) 02:08:38.50ID:/ObTgJox 一般ユーザにとってはな
無知晒すのもいい加減にしろよ
無知晒すのもいい加減にしろよ
927デフォルトの名無しさん
2022/11/11(金) 02:58:35.00ID:M0nB3cbT 残念ながらUNIXのシェアは0.1パーセントとかなのよね
https://w3techs.com/technologies/details/os-unix
https://w3techs.com/technologies/details/os-unix
928デフォルトの名無しさん
2022/11/11(金) 12:25:02.65ID:dkXTOyUr そのページはWebサーバ限定で、しかもUNIXは80.3%使用されてるって書いてあるけど…
仮にlinuxとBSDを抜いたとしても、
0.803×0.533=約40%は使われてる計算
仮にlinuxとBSDを抜いたとしても、
0.803×0.533=約40%は使われてる計算
929デフォルトの名無しさん
2022/11/11(金) 15:42:15.81ID:KNn1/gM5930デフォルトの名無しさん
2022/11/11(金) 17:55:17.80ID:35BXJdBb >>929
アホはお前だろ。英語一文字も読めないのかよ
アホはお前だろ。英語一文字も読めないのかよ
931デフォルトの名無しさん
2022/11/11(金) 19:48:26.89ID:KNn1/gM5 どこの英語一文字の話をしているのか言ってみ
932デフォルトの名無しさん
2022/11/11(金) 22:25:10.60ID:aBiT4hkd どっちもどっち
unknownはlinux含むunix
linuxを除くunixがそこに何%含まれてるかは分からない
だからunixのシェアが0.1%とも40%ととも言えない
unknownはlinux含むunix
linuxを除くunixがそこに何%含まれてるかは分からない
だからunixのシェアが0.1%とも40%ととも言えない
933デフォルトの名無しさん
2022/11/11(金) 23:07:06.98ID:KNn1/gM5 どっちかわからんなら
分かってるのと同じ割合を割り当てろよ
分かってるのと同じ割合を割り当てろよ
934デフォルトの名無しさん
2022/11/11(金) 23:15:32.87ID:yV2t16iO 基盤なunixは変わらず生き続ける
linuxは傍流でしかない、仕様策定上は。bashismで見られるようにw
linux使ってるだけのlinux中だろな。中学生な
linuxは傍流でしかない、仕様策定上は。bashismで見られるようにw
linux使ってるだけのlinux中だろな。中学生な
935デフォルトの名無しさん
2022/11/12(土) 00:47:02.31ID:Cj/ueztB936デフォルトの名無しさん
2022/11/12(土) 13:16:01.01ID:ndWlPBfM 頭悪い反発
937デフォルトの名無しさん
2022/11/12(土) 19:15:00.71ID:2bWZf5Rs あるディレクトリの下にサブディレクトリがいくつかあって、それぞれのサブディレクトリの中にはファイルがいくつかずつある
このサブディレクトリ群内のファイルを対象に作成日時が新しいものから順に任意の個数を選んでサブディレクトリ名を含んだパス名を出力する場合どう書く?
このサブディレクトリ群内のファイルを対象に作成日時が新しいものから順に任意の個数を選んでサブディレクトリ名を含んだパス名を出力する場合どう書く?
938デフォルトの名無しさん
2022/11/12(土) 19:49:20.63ID:Cj/ueztB どう書く?どう書く?ど~う~書く?
君ならどう書く~?
君ならどう書く~?
939デフォルトの名無しさん
2022/11/12(土) 20:04:50.63ID:Zr4m37Yp Perlで書く。
適材適所。
適材適所。
940デフォルトの名無しさん
2022/11/12(土) 21:33:57.14ID:Cj/ueztB 適材適所ならシェルスクリプトの方が適してるでしょ?
941デフォルトの名無しさん
2022/11/12(土) 23:40:47.58ID:2bWZf5Rs 自己解決した findのprintfオプションとsortとsedで出来た ども
942デフォルトの名無しさん
2022/12/15(木) 20:10:29.53ID:xAICKfjX bashの実行中上書き動作ってどういう時に役立つの?
943デフォルトの名無しさん
2022/12/15(木) 20:30:31.26ID:ckKyI6FD Unix/Linuxは昔から実行中にファイルを書き換えられる
Windowsとは違う
Windowsとは違う
944デフォルトの名無しさん
2022/12/15(木) 21:57:10.51ID:RzHoZPr/ 超Geekぐらいだろな、役立つように使おうとするのは
機能としてではなく限られたメモリ上でどうするかでそうなったんじゃね
>>943
バイナリの正当な(?)実行ファイルもそうなのか?
あり得ないけど=今時のUnix系OSはそうはならない
機能としてではなく限られたメモリ上でどうするかでそうなったんじゃね
>>943
バイナリの正当な(?)実行ファイルもそうなのか?
あり得ないけど=今時のUnix系OSはそうはならない
945デフォルトの名無しさん
2022/12/15(木) 22:14:44.89ID:a9LNvh7S UNIX/Linuxにはアドバイザリロックしかないんだから
実行中にファイルは書き換えられる
バイナリ実行ファイルは、スクリプト言語とは違って
最初にメモリに全部読み込むってだけ
実行中にファイルは書き換えられる
バイナリ実行ファイルは、スクリプト言語とは違って
最初にメモリに全部読み込むってだけ
946デフォルトの名無しさん
2022/12/15(木) 23:02:40.00ID:DSr8QAEc そもそも、シェルやしな。
インタラクティブが前提なら必要なとこまでしか読んどらんやろから、自然とそうなるんちゃうか。
インタラクティブが前提なら必要なとこまでしか読んどらんやろから、自然とそうなるんちゃうか。
947デフォルトの名無しさん
2022/12/15(木) 23:11:24.42ID:a9LNvh7S インタプリタっていうのは元々そういうもんだと思うけどね
一行ごとに解釈するものなんだから、必要ないところまで読み込む必要がない
最近のスクリプト言語は最初にファイル全体を解釈して
内部的にバイナリにしているような気がするけど
それもファイル単位で動的にファイルを読み込むこともあるし
一行ごとに解釈するものなんだから、必要ないところまで読み込む必要がない
最近のスクリプト言語は最初にファイル全体を解釈して
内部的にバイナリにしているような気がするけど
それもファイル単位で動的にファイルを読み込むこともあるし
948デフォルトの名無しさん
2022/12/15(木) 23:16:12.82ID:5ZR90K1l 昨年末にHP(が作成したスクリプト)が京大のスパコンデータを吹き飛ばした事故があったけど、あれも原因は「実行中のシェルスクリプト書き換え」だったはず
949デフォルトの名無しさん
2022/12/15(木) 23:19:14.14ID:a9LNvh7S 普通にバックアップ処理実行中に
プログラムアップデートするなって話だな
プログラムアップデートするなって話だな
950デフォルトの名無しさん
2022/12/16(金) 09:17:10.65ID:OmUfbGxN >>947
opengroupはシェルスクリプトのコンパイルとか静的解析とか、なにやら不穏な事を考えているよう
One justification for ignoring the contents of IFS upon entry to the script, beyond security considerations, is to assist possible future shell compilers. Allowing IFS to be imported from the environment prevents many optimizations that might otherwise be performed via dataflow analysis of the script itself.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
寡聞だが珍妙な事やってるシェルなんて知らないし、シェルスクリプトなんてロートルなのがむしろ魅力なのにな
ちなみに俺はexitの後に>>"$0"でデバッグ中のログ取りしてる、別にログファイル作るのめんどいしバッファ再読み込みでエディタにすぐフィードバックが得られる
他のビルトインの項を見ても珍妙な展望(?)が見られて面白い、誰が望むんだこれ
It is anticipated that a future implementation could take advantage of this and provide something like:
outofloop: for i in a b c d e
do
for j in 0 1 2 3 4 5 6 7 8 9
do
if test -r "${i}${j}"
then break outofloop
fi
done
done
and that this might be standardized after implementation experience is achieved.
実装に先走って舵取りまでやりたいのかこいつら、傲慢もいいとこ
opengroupはシェルスクリプトのコンパイルとか静的解析とか、なにやら不穏な事を考えているよう
One justification for ignoring the contents of IFS upon entry to the script, beyond security considerations, is to assist possible future shell compilers. Allowing IFS to be imported from the environment prevents many optimizations that might otherwise be performed via dataflow analysis of the script itself.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
寡聞だが珍妙な事やってるシェルなんて知らないし、シェルスクリプトなんてロートルなのがむしろ魅力なのにな
ちなみに俺はexitの後に>>"$0"でデバッグ中のログ取りしてる、別にログファイル作るのめんどいしバッファ再読み込みでエディタにすぐフィードバックが得られる
他のビルトインの項を見ても珍妙な展望(?)が見られて面白い、誰が望むんだこれ
It is anticipated that a future implementation could take advantage of this and provide something like:
outofloop: for i in a b c d e
do
for j in 0 1 2 3 4 5 6 7 8 9
do
if test -r "${i}${j}"
then break outofloop
fi
done
done
and that this might be standardized after implementation experience is achieved.
実装に先走って舵取りまでやりたいのかこいつら、傲慢もいいとこ
951デフォルトの名無しさん
2022/12/16(金) 09:26:55.18ID:OmUfbGxN exitやexecの先まで読まれるとtclやperlのように頭だけシェルスクリプトとして読まれて、読まれない部分にコードを記述するインタプリタや、到達しない部分をデータ置き場として使ってるスクリプトが困るような
まあ展望されている実装が十分賢くて、そこでシンタックスエラー出さないなら問題無いんだけど
まあ展望されている実装が十分賢くて、そこでシンタックスエラー出さないなら問題無いんだけど
952デフォルトの名無しさん
2022/12/16(金) 09:41:47.00ID:OmUfbGxN source another-file
${exitcmd}
こんなもん解析できるわけねー
${exitcmd}
こんなもん解析できるわけねー
953デフォルトの名無しさん
2022/12/16(金) 10:43:52.39ID:IL6/baQf >>950
何言ってるの? opengroupはシェル開発者がやろうと思っていることを
妨げないようにしているだけ
シェルスクリプトのコンパイルであればBourne Shellの開発者がやろうとしたことだし
Korn Shellにはずっと前からシェルスクリプトのコンパイラがある
お前の意見を押し付けるな
傲慢はお前だろ
何言ってるの? opengroupはシェル開発者がやろうと思っていることを
妨げないようにしているだけ
シェルスクリプトのコンパイルであればBourne Shellの開発者がやろうとしたことだし
Korn Shellにはずっと前からシェルスクリプトのコンパイラがある
お前の意見を押し付けるな
傲慢はお前だろ
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は適当だけど、既に予約されてて意味の通るトークンが流用できれば望ましい
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★2 [♪♪♪★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- 人類「猟友会がクマ駆除要請の拒否したら銃取り上げたらいい。何のために銃持たせてやってるんだ?積丹の気持ちは理解できる」 [932029429]
- ワチが一番キライなスポーツ1つ当ててみ
- (*´ω`*)おはヨーグルト
- 16のヒッキー女に構って
- ネトウヨ「レアアースは日本でも採れるから輸入しなくてもOK!」 なお精製コストがバカ高く有害物質が大量に出ることは全く知らない模様 [314039747]
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
