シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「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
2021/10/05(火) 22:50:14.38ID:KsbWuyFp
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 https://unix.stackexchange.com/questions/145522/
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・POSIX準拠シェルのおすすめは?→多く使われているのはDebian/Ubuntu系のdashです
・bashでいいじゃん→bashがインストールされてない環境があります。環境によってデフォルトシェルの実体は異なります
Debian系 … dash CentOS系 … bash Alpine … busybox ash Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・macOSはzshなんだよね?→ログインシェルがzshに変わっただけで/bin/shはbash 3.2です
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
・シバンになにを使えばいいの?→POSIX準拠してるなら#!/bin/sh、bashなら#!/bin/bashか#!/usr/bin/env bash
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
・Bourneシェル(≒POSIXシェル)はPOSIX標準化前にUNIXで使われていたシェルで多くの亜種が存在します
Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題は正規表現スレへ
・シェル芸とシェルスクリプトは全く異なります
・シェルスクリプトのことをシェルってゆうな
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 https://unix.stackexchange.com/questions/145522/
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・POSIX準拠シェルのおすすめは?→多く使われているのはDebian/Ubuntu系のdashです
・bashでいいじゃん→bashがインストールされてない環境があります。環境によってデフォルトシェルの実体は異なります
Debian系 … dash CentOS系 … bash Alpine … busybox ash Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・macOSはzshなんだよね?→ログインシェルがzshに変わっただけで/bin/shはbash 3.2です
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
・シバンになにを使えばいいの?→POSIX準拠してるなら#!/bin/sh、bashなら#!/bin/bashか#!/usr/bin/env bash
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
・Bourneシェル(≒POSIXシェル)はPOSIX標準化前にUNIXで使われていたシェルで多くの亜種が存在します
Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題は正規表現スレへ
・シェル芸とシェルスクリプトは全く異なります
・シェルスクリプトのことをシェルってゆうな
3デフォルトの名無しさん
2021/10/06(水) 17:20:42.12ID:XJEs7oM2 2ゲット
4デフォルトの名無しさん
2021/10/08(金) 03:54:38.51ID:LzOvy0cf 3げと
5デフォルトの名無しさん
2021/10/09(土) 07:02:28.75ID:F/g3bnt2 げっとわいるど
6デフォルトの名無しさん
2021/10/12(火) 17:53:02.51ID:elEZT6pO つーか真偽値の問題じゃなくて
シェルスクリプトのifが終了ステータスを判断するコマンドってだけだろ
シェルスクリプトのifが終了ステータスを判断するコマンドってだけだろ
7デフォルトの名無しさん
2021/10/12(火) 17:54:35.21ID:elEZT6pO あとシェル関数が返すのも終了ステータス
戻り値じゃない、そもそも終了ステータスしか返せないだろ
returnだからって他の言語のretruntを同じだと思うなよ
戻り値じゃない、そもそも終了ステータスしか返せないだろ
returnだからって他の言語のretruntを同じだと思うなよ
2021/10/12(火) 17:59:10.51ID:FcrICImt
>>6
だから真偽値の問題でしょw
お前、いい加減自分で何言ってるかわかってないだろw
それを言ったらC言語のifだって値を判断するだけのコマンド(文)って
なっちゃうだろwww
だれかがboolean型持ち出したから、混乱してんのかもしれないけど、
昔のC言語にはそんな型ねーからな?w
だから真偽値の問題でしょw
お前、いい加減自分で何言ってるかわかってないだろw
それを言ったらC言語のifだって値を判断するだけのコマンド(文)って
なっちゃうだろwww
だれかがboolean型持ち出したから、混乱してんのかもしれないけど、
昔のC言語にはそんな型ねーからな?w
2021/10/12(火) 18:01:19.29ID:FcrICImt
結局、Cでも(その他でも)シェルスクリプトでさえも、
ifってのは式の値を真偽に判断するものなんだよ。
ifってのは式の値を真偽に判断するものなんだよ。
2021/10/12(火) 18:04:36.01ID:FcrICImt
だから、シェルスクリプトが他と違って特殊なのは、
式の値を0の場合を真と判断するところ、だけだよ。
それがexit statusであるかとかは全く関係がない。
要点はそこだけ。
式の値を0の場合を真と判断するところ、だけだよ。
それがexit statusであるかとかは全く関係がない。
要点はそこだけ。
2021/10/12(火) 18:05:26.22ID:h64P2lE5
>>ID:FcrICImt
本当に、前スレ>>984で言われた通りだな
if command; then
で、commandのとこにコマンドを書いたことないのか?
プログラミングにおいて、問題なく実行できたら別にどうとかはないが、失敗した時には原因が欲しいのは当然
コマンドの実行においても同じ。だから、成功できた場合は 0 で、それ以外の値は失敗になるのも当然。エラーの場合のExit Statusの値を規定できてなかった/してなかったからから「含み」を持たせてるだけになってるが
(よくわからんが、JCLとやらも同じそう)
>シェルスクリプトで、0がノーエラーでなければいけない理由はif文の条件式の判定が
>特殊だから。
逆だよ、上に書いてある通り、また、前スレ>>936のK&Rが言っている通り、0 が正常(お前の言う「真」)が先だよ
シェルスクリプトがコマンドを実行するためのものなんだから、成功=0(=お前の言う「真」)とするのも独特でもなんでもないな。他の言語と比べると独特と見えるのかもだが
command && command
とか、常識的に見えるだろ?上手く整合性があるようにできてるんだよ
つづく
本当に、前スレ>>984で言われた通りだな
if command; then
で、commandのとこにコマンドを書いたことないのか?
プログラミングにおいて、問題なく実行できたら別にどうとかはないが、失敗した時には原因が欲しいのは当然
コマンドの実行においても同じ。だから、成功できた場合は 0 で、それ以外の値は失敗になるのも当然。エラーの場合のExit Statusの値を規定できてなかった/してなかったからから「含み」を持たせてるだけになってるが
(よくわからんが、JCLとやらも同じそう)
>シェルスクリプトで、0がノーエラーでなければいけない理由はif文の条件式の判定が
>特殊だから。
逆だよ、上に書いてある通り、また、前スレ>>936のK&Rが言っている通り、0 が正常(お前の言う「真」)が先だよ
シェルスクリプトがコマンドを実行するためのものなんだから、成功=0(=お前の言う「真」)とするのも独特でもなんでもないな。他の言語と比べると独特と見えるのかもだが
command && command
とか、常識的に見えるだろ?上手く整合性があるようにできてるんだよ
つづく
2021/10/12(火) 18:05:36.77ID:h64P2lE5
つづき
真偽に拘りたい真偽でしか理解できないなら、
他の言語は 「評価式の結果 != 0」
シェルスクリプトは「コマンドを実行した Exist Status == 0」
がどちらも暗黙的に行われてると思えばいいだろ
これなら純粋(=完全な2値になる)真偽だしな
他の言語で
value = 何か
if (value != 0)
...
シェルスクリプト
if コマンドのExit Status == 0; then
...
前スレ>>989なんて言ってるけど、確かにWindows APIはBooleanで返すのが多い
だがそれはWindows APIの文化でしかない、シェルスクリプトの本家wであるUnixで何か書いたことがあるなら文化が違うとわかりそうなもんだが、なぜかWindows APIのが全てと言ってそうな前スレ>>989
WSLからのにわかか?
何かまだ言い張ってるなあ
真偽に拘りたい真偽でしか理解できないなら、
他の言語は 「評価式の結果 != 0」
シェルスクリプトは「コマンドを実行した Exist Status == 0」
がどちらも暗黙的に行われてると思えばいいだろ
これなら純粋(=完全な2値になる)真偽だしな
他の言語で
value = 何か
if (value != 0)
...
シェルスクリプト
if コマンドのExit Status == 0; then
...
前スレ>>989なんて言ってるけど、確かにWindows APIはBooleanで返すのが多い
だがそれはWindows APIの文化でしかない、シェルスクリプトの本家wであるUnixで何か書いたことがあるなら文化が違うとわかりそうなもんだが、なぜかWindows APIのが全てと言ってそうな前スレ>>989
WSLからのにわかか?
何かまだ言い張ってるなあ
2021/10/12(火) 18:06:45.20ID:FcrICImt
あ、あとついでに言っとくと、終了コードを判断するしかないのは、シェルスクリプト
はそれ自体がそもそも計算ができないからw
そうならざるを得ないのは、この点にかかるw
はそれ自体がそもそも計算ができないからw
そうならざるを得ないのは、この点にかかるw
2021/10/12(火) 18:09:14.05ID:h64P2lE5
もうにわかの勝手な妄想爆発と思うしかないなw
2021/10/12(火) 18:16:00.36ID:FcrICImt
ID:h64P2lE5はそもそもプログラミング言語というものを理解できてないんだなw
いや、プログラミングが理解できてないのか?w
あと日本語も多分理解できてないんだろうなw
で、結局、ID:h64P2lE5は何が言いたいんだ?w
もうさっぱり分からんよw
いや、プログラミングが理解できてないのか?w
あと日本語も多分理解できてないんだろうなw
で、結局、ID:h64P2lE5は何が言いたいんだ?w
もうさっぱり分からんよw
2021/10/12(火) 18:19:01.30ID:FcrICImt
2021/10/12(火) 18:20:12.34ID:h64P2lE5
2021/10/12(火) 18:21:35.92ID:h64P2lE5
2021/10/12(火) 18:22:26.42ID:FcrICImt
2021/10/12(火) 18:24:29.03ID:h64P2lE5
>プログラミング言語というものを理解できてないんだなw
>いや、プログラミングが理解できてないのか?w
>あと日本語も多分理解できてないんだろうなw
>シェルスクリプト以外のプログラミング言語を少しは勉強したら
>つかシェルスクリプトも書けそうな気がしねーけどな
>お前の文章は支離滅裂で関係ないところにあっちこっち飛ぶから
すげえな、改めて見ると。この異常さは何か察してしまうな
>いや、プログラミングが理解できてないのか?w
>あと日本語も多分理解できてないんだろうなw
>シェルスクリプト以外のプログラミング言語を少しは勉強したら
>つかシェルスクリプトも書けそうな気がしねーけどな
>お前の文章は支離滅裂で関係ないところにあっちこっち飛ぶから
すげえな、改めて見ると。この異常さは何か察してしまうな
2021/10/12(火) 18:25:31.96ID:FcrICImt
>>18
「根本的なプログラミング/プログラミング言語の誤った理解」をしているのはお前だよw
例えば、Cでさ、
if (0) {printf("true");}else {printf("false")}
として実行したら何が表示されると思う?w
trueが表示されると思ってる?w
「根本的なプログラミング/プログラミング言語の誤った理解」をしているのはお前だよw
例えば、Cでさ、
if (0) {printf("true");}else {printf("false")}
として実行したら何が表示されると思う?w
trueが表示されると思ってる?w
2021/10/12(火) 18:27:51.86ID:h64P2lE5
2021/10/12(火) 18:28:56.01ID:FcrICImt
2021/10/12(火) 18:29:58.72ID:h64P2lE5
2021/10/12(火) 18:30:33.61ID:h64P2lE5
読まないやつのはもう知らんぞ
2021/10/12(火) 18:30:59.65ID:FcrICImt
2021/10/12(火) 18:32:00.93ID:FcrICImt
2021/10/12(火) 18:32:21.39ID:h64P2lE5
2021/10/12(火) 18:34:03.18ID:h64P2lE5
2021/10/12(火) 18:34:40.41ID:FcrICImt
2021/10/12(火) 18:37:47.06ID:FcrICImt
あーあ、ミスってしまったw
そもそも==ってのは比較演算子であって、値を算出するものだ、ってのは理解してるかな?w
ま、読まないし、聞かないし、基礎もだめ、なのを相手にしても無益か。
ID:h64P2lE5
は結局、核心を突かれた質問をされると相手を罵倒して逃げるだけのクズだということでw
そもそも==ってのは比較演算子であって、値を算出するものだ、ってのは理解してるかな?w
ま、読まないし、聞かないし、基礎もだめ、なのを相手にしても無益か。
ID:h64P2lE5
は結局、核心を突かれた質問をされると相手を罵倒して逃げるだけのクズだということでw
2021/10/12(火) 18:38:48.32ID:h64P2lE5
2021/10/12(火) 18:39:27.41ID:h64P2lE5
>>31
また変なこと言い出してるw
また変なこと言い出してるw
2021/10/12(火) 18:40:50.86ID:h64P2lE5
2021/10/12(火) 18:43:19.24ID:h64P2lE5
2021/10/12(火) 18:46:33.75ID:FcrICImt
>>34
お前さ、本当に俺の書いてあること読めてる?理解できる?
お前のようなやつを「おさとが知れる」っていうんだぞ?w
ボキャも貧弱で、おまえの日本語能力すらも程度が知れるんだがw
だからさ、結局、何が言いたいの?w
シェルスクリプトの真偽判定は特殊ではない、
Cと同じだ、と言いたいの?w
で、それは違うよ、って言ってるんだけど、まだ分からない?
日本語が理解できないの?w
お前さ、本当に俺の書いてあること読めてる?理解できる?
お前のようなやつを「おさとが知れる」っていうんだぞ?w
ボキャも貧弱で、おまえの日本語能力すらも程度が知れるんだがw
だからさ、結局、何が言いたいの?w
シェルスクリプトの真偽判定は特殊ではない、
Cと同じだ、と言いたいの?w
で、それは違うよ、って言ってるんだけど、まだ分からない?
日本語が理解できないの?w
2021/10/12(火) 18:49:13.63ID:FcrICImt
あと、なんで、そんなに自分の発言引用したがるの?ID:h64P2lE5
自作自演してるの?w
自作自演してるの?w
2021/10/12(火) 18:50:53.32ID:h64P2lE5
2021/10/12(火) 18:58:52.25ID:FcrICImt
>>38
!=
ってのが比較演算子であって、計算をしている、ってのは理解できる?
「0 != 0 は純粋な二値Booleanになる」
ここが判ってないな、と思うわw
プログラミング言語ってのはそれをBooleanにしてるわけじゃないんだよw
「0かそれ以外」に分けてるだけなんだよw
(アセンブラを分かれば、こんなことは自明なんだけどねw)
概念的にbooleanと言ってるかもしれないけど、それは単に概念的な話であって、
実際とは違う。
ま、比較演算子については1か0かしか返さないよ。
でも、それは比較演算子だから、であって、例えば、算術演算子使って
if ( 1+1 ) {..}
でも成立するってのはわかってる?w
!=
ってのが比較演算子であって、計算をしている、ってのは理解できる?
「0 != 0 は純粋な二値Booleanになる」
ここが判ってないな、と思うわw
プログラミング言語ってのはそれをBooleanにしてるわけじゃないんだよw
「0かそれ以外」に分けてるだけなんだよw
(アセンブラを分かれば、こんなことは自明なんだけどねw)
概念的にbooleanと言ってるかもしれないけど、それは単に概念的な話であって、
実際とは違う。
ま、比較演算子については1か0かしか返さないよ。
でも、それは比較演算子だから、であって、例えば、算術演算子使って
if ( 1+1 ) {..}
でも成立するってのはわかってる?w
2021/10/12(火) 19:03:07.20ID:h64P2lE5
>>39
んー...
誤 >>11の冒頭でも書いてるけど、
正 >>12の冒頭でも書いてるけど、
な。すまん
>>36
11に既に書いてる
わかりづらいのはあるかもだがw、もう根本的にはお前の理解不足(知見の無ささによる)としか思えんから、頑張って読んでね
>>39
「計算」をした結果が、純粋な二値Booleanになるんだけど?
自分で「比較演算子については1か0かしか返さないよ」って書いてるくせに何を言ってるの?
だから暗黙的に != 0 がされてると「思え」と言ってるんだが、まだわからんのだが
if ( (1+1) != 0 ) {..}
ってことがわからないんだな...知識が無さすぎだろう
んー...
誤 >>11の冒頭でも書いてるけど、
正 >>12の冒頭でも書いてるけど、
な。すまん
>>36
11に既に書いてる
わかりづらいのはあるかもだがw、もう根本的にはお前の理解不足(知見の無ささによる)としか思えんから、頑張って読んでね
>>39
「計算」をした結果が、純粋な二値Booleanになるんだけど?
自分で「比較演算子については1か0かしか返さないよ」って書いてるくせに何を言ってるの?
だから暗黙的に != 0 がされてると「思え」と言ってるんだが、まだわからんのだが
if ( (1+1) != 0 ) {..}
ってことがわからないんだな...知識が無さすぎだろう
2021/10/12(火) 19:10:50.57ID:FcrICImt
>>40
>「計算」をした結果が、純粋な二値Booleanになるんだけど?
だから、そこが判ってないだろw
「二値Booleanになる」のではなくて、「二値Booleanとして判断する」だけ。
だから、「思え」とかいうお前の独善的な命令なんか知ったことじゃないん
だってw
> if ( (1+1) != 0 ) {..}
> ってことがわからないんだな...知識が無さすぎだろう
だから、お前がそう理解したい、って言うんなら、それは間違いではない、とは言ってやるよw
でも、それは「正しい」わけじゃないし、「唯一の間違いじゃない解」でもないんだよ。
頭悪すぎだよ、お前。
あとさ、本当に俺の書いたことをお前は読んだの?俺の言いたいことはちゃんと書いてあるし、
理解できるのなら、お前は俺に対して行った数々の暴言を詫びるべきじゃないかな。
>「計算」をした結果が、純粋な二値Booleanになるんだけど?
だから、そこが判ってないだろw
「二値Booleanになる」のではなくて、「二値Booleanとして判断する」だけ。
だから、「思え」とかいうお前の独善的な命令なんか知ったことじゃないん
だってw
> if ( (1+1) != 0 ) {..}
> ってことがわからないんだな...知識が無さすぎだろう
だから、お前がそう理解したい、って言うんなら、それは間違いではない、とは言ってやるよw
でも、それは「正しい」わけじゃないし、「唯一の間違いじゃない解」でもないんだよ。
頭悪すぎだよ、お前。
あとさ、本当に俺の書いたことをお前は読んだの?俺の言いたいことはちゃんと書いてあるし、
理解できるのなら、お前は俺に対して行った数々の暴言を詫びるべきじゃないかな。
2021/10/12(火) 19:16:26.06ID:4emiI4KE
ID:FcrICImtはなんかいうたびにアホが漏れとるな。w
そんなんでイキっとったらアカンで!
相手にしてもらえるのはここだけなんやし。
ほかやったら完全スルーやで。
そんなんでイキっとったらアカンで!
相手にしてもらえるのはここだけなんやし。
ほかやったら完全スルーやで。
2021/10/12(火) 19:17:47.05ID:FcrICImt
ID:4emiI4KE
本当にボキャないな、お前w
日本語をまず勉強しようなw
本当にボキャないな、お前w
日本語をまず勉強しようなw
2021/10/12(火) 19:18:04.33ID:h64P2lE5
>>41
ごまかしか?
>!=
>ってのが比較演算子であって、計算をしている、ってのは理解できる
>「0 != 0 は純粋な二値Booleanになる」
...
>ま、比較演算子については1か0かしか返さないよ
に対してだぞ。「1か0かしか」は明らかに 純粋な二値Boolean だろうが、何を言ってるのか
お前は一般的な話で、
if true
next sentence
というようなこと言っただろう?そんなに真偽(true/false)に拘りたければの話だぞ
なら>>12って話で、他の言語もシェルスクリプトも暗黙的にやってると思えばそれにも合うって話なのに、つくづくお前は自己都合だな
まさか暗黙的ってことがわからないとかあるのか?>>39のあたりから薄々感じてるけどw
ごまかしか?
>!=
>ってのが比較演算子であって、計算をしている、ってのは理解できる
>「0 != 0 は純粋な二値Booleanになる」
...
>ま、比較演算子については1か0かしか返さないよ
に対してだぞ。「1か0かしか」は明らかに 純粋な二値Boolean だろうが、何を言ってるのか
お前は一般的な話で、
if true
next sentence
というようなこと言っただろう?そんなに真偽(true/false)に拘りたければの話だぞ
なら>>12って話で、他の言語もシェルスクリプトも暗黙的にやってると思えばそれにも合うって話なのに、つくづくお前は自己都合だな
まさか暗黙的ってことがわからないとかあるのか?>>39のあたりから薄々感じてるけどw
2021/10/12(火) 19:25:08.03ID:FcrICImt
>>44
> に対してだぞ。「1か0かしか」は明らかに 純粋な二値Boolean だろうが、何を言ってるのか
まだわかんないの?w
1も0もBooleanじゃないよwここで言ったのはまさに数としての1と0なんでねw
「Booleanとして判断するなら」、1はtrueで0はfalseと「解釈できる」だけの話だよ?w
真偽に拘りたければ、の下りは一体何を言ってるのか分からんよw
せめて、俺の具体的な言葉を使ってもらえんかね?
あと「暗黙的」なんて話はそもそもした覚えがないしなぜそのような言葉がここで
突拍子もなく出てくるのか分からんよw
> に対してだぞ。「1か0かしか」は明らかに 純粋な二値Boolean だろうが、何を言ってるのか
まだわかんないの?w
1も0もBooleanじゃないよwここで言ったのはまさに数としての1と0なんでねw
「Booleanとして判断するなら」、1はtrueで0はfalseと「解釈できる」だけの話だよ?w
真偽に拘りたければ、の下りは一体何を言ってるのか分からんよw
せめて、俺の具体的な言葉を使ってもらえんかね?
あと「暗黙的」なんて話はそもそもした覚えがないしなぜそのような言葉がここで
突拍子もなく出てくるのか分からんよw
2021/10/12(火) 19:33:54.34ID:h64P2lE5
>>45
>1も0もBooleanじゃないよw
知識が貧弱すぎて話にならないな
Booleanって言語での「型」だけだと思ってるんだろうな
1/0 (別に他の何かでもいいけど) 2値で真偽を表すのはBooleanなんだけど、それを知らないというのはわかった
自分で1が真だとも言ってる風なくせに
>>12 が全く読めてないのはわかった。「暗黙的」という意味がわからなかったというのもわかった
何かまた誤魔化してるようだけどな(誤魔化してるというかまだわかってない故にかもしれんけどw)
場合によっては真偽を言い、場合によっては言語特有のことをいい、ベース知識がないからフラフラしてんだよ、お前は
いや、単に何かいい負けたくないwだけか?w
>1も0もBooleanじゃないよw
知識が貧弱すぎて話にならないな
Booleanって言語での「型」だけだと思ってるんだろうな
1/0 (別に他の何かでもいいけど) 2値で真偽を表すのはBooleanなんだけど、それを知らないというのはわかった
自分で1が真だとも言ってる風なくせに
>>12 が全く読めてないのはわかった。「暗黙的」という意味がわからなかったというのもわかった
何かまた誤魔化してるようだけどな(誤魔化してるというかまだわかってない故にかもしれんけどw)
場合によっては真偽を言い、場合によっては言語特有のことをいい、ベース知識がないからフラフラしてんだよ、お前は
いや、単に何かいい負けたくないwだけか?w
2021/10/12(火) 19:36:18.86ID:FcrICImt
あ、あとさあ、
プログラミング言語の話をしてるときに、JCLを持ち出すってのはどうかな、と思うわ。
そもそもJCLって規格があったりする言語でもないだろうし(あんの?w大型は
ほとんど使ったことないから知らんけどw)
ID:h64P2lE5はプログラミング言語をCとシェルスクリプトくらいしか知らない、って読めるけど。
プログラミング言語の話をしてるときに、JCLを持ち出すってのはどうかな、と思うわ。
そもそもJCLって規格があったりする言語でもないだろうし(あんの?w大型は
ほとんど使ったことないから知らんけどw)
ID:h64P2lE5はプログラミング言語をCとシェルスクリプトくらいしか知らない、って読めるけど。
2021/10/12(火) 19:39:21.53ID:h64P2lE5
>>47
歴史的なことだよ、よく知らんけど
コマンド(小さなプログラムの)の実行と制御という点ではシェルスクリプトは近しいだろう
>ID:h64P2lE5はプログラミング言語をCとシェルスクリプトくらいしか知らない、って読めるけど。
また、言い出してるw
歴史的なことだよ、よく知らんけど
コマンド(小さなプログラムの)の実行と制御という点ではシェルスクリプトは近しいだろう
>ID:h64P2lE5はプログラミング言語をCとシェルスクリプトくらいしか知らない、って読めるけど。
また、言い出してるw
2021/10/12(火) 19:42:53.55ID:FcrICImt
>>46
知識が貧弱なのはお前だろw
で、なに、俺の書いた表現が間違ってると、
お前は強弁するわけね?w
解釈って言葉の意味は分かる?
じゃあさ、余計な御託は要らないから、俺の書いた文章のどこがどう
間違ってるか具体的に指摘してもらえるかね?
俺はお前がどう間違ってるか、具体的に指摘したよな。
それに対してお前は「知識が貧弱」だの、型だけだの、全然筋違いの「文句」を
並べただけだよな?(こういうのが「御託」ね?w)
あと凄く勘違いしているようだが、そもそも俺の書きこみに喧嘩売るような真似を
したのはお前の方だからな?
知識が貧弱なのはお前だろw
で、なに、俺の書いた表現が間違ってると、
お前は強弁するわけね?w
解釈って言葉の意味は分かる?
じゃあさ、余計な御託は要らないから、俺の書いた文章のどこがどう
間違ってるか具体的に指摘してもらえるかね?
俺はお前がどう間違ってるか、具体的に指摘したよな。
それに対してお前は「知識が貧弱」だの、型だけだの、全然筋違いの「文句」を
並べただけだよな?(こういうのが「御託」ね?w)
あと凄く勘違いしているようだが、そもそも俺の書きこみに喧嘩売るような真似を
したのはお前の方だからな?
2021/10/12(火) 19:46:05.80ID:FcrICImt
2021/10/12(火) 19:48:23.86ID:h64P2lE5
2021/10/12(火) 19:51:09.23ID:h64P2lE5
2021/10/12(火) 19:55:09.09ID:FcrICImt
>>51
めんどくさいのはこっちだよw
何も間違ったことなど一つも書いちゃいないのに、
なんか、チンピラみたいなID:h64P2ltE5に因縁つけられて
絡まれて。
結局、また核心突かれると罵倒くりかえして逃げるんだねw
で、解釈って言葉の意味は分かるの?w
どうして指摘されたことにきちんと返さないの?w
これじゃ議論どころか会話にもならんよw
めんどくさいのはこっちだよw
何も間違ったことなど一つも書いちゃいないのに、
なんか、チンピラみたいなID:h64P2ltE5に因縁つけられて
絡まれて。
結局、また核心突かれると罵倒くりかえして逃げるんだねw
で、解釈って言葉の意味は分かるの?w
どうして指摘されたことにきちんと返さないの?w
これじゃ議論どころか会話にもならんよw
2021/10/12(火) 19:56:20.34ID:FcrICImt
2021/10/12(火) 19:57:36.66ID:FcrICImt
>>52
まさか、0か0以外かなんてことを理解している程度で自慢になるなんて思いもしなかったわw
まさか、0か0以外かなんてことを理解している程度で自慢になるなんて思いもしなかったわw
2021/10/12(火) 19:58:03.26ID:h64P2lE5
2021/10/12(火) 19:59:35.46ID:4emiI4KE
2021/10/12(火) 19:59:53.17ID:h64P2lE5
2021/10/12(火) 20:00:50.43ID:h64P2lE5
2021/10/12(火) 20:03:47.53ID:FcrICImt
61デフォルトの名無しさん
2021/10/12(火) 20:04:19.68ID:elEZT6pO >>8
お前本当にわかってないのかw
C言語のifは真偽値を判断するもので
シェルスクリプトのifは終了ステータスを判断するものなの
C言語のreturnは戻り値を返すもので
シェルスクリプトのreturnは終了ステータスを返すものなの
C言語でもmain(コマンド)のreturnは正常時に0を返さないのいけないの
シェルスクリプトはすべての関数がコマンドと同じ扱いだから正常時に0を返すの
理解できたか?
お前本当にわかってないのかw
C言語のifは真偽値を判断するもので
シェルスクリプトのifは終了ステータスを判断するものなの
C言語のreturnは戻り値を返すもので
シェルスクリプトのreturnは終了ステータスを返すものなの
C言語でもmain(コマンド)のreturnは正常時に0を返さないのいけないの
シェルスクリプトはすべての関数がコマンドと同じ扱いだから正常時に0を返すの
理解できたか?
2021/10/12(火) 20:05:29.05ID:h64P2lE5
2021/10/12(火) 20:08:03.12ID:FcrICImt
64デフォルトの名無しさん
2021/10/12(火) 20:09:04.16ID:FcrICImt2021/10/12(火) 20:10:37.66ID:h64P2lE5
2021/10/12(火) 20:11:18.02ID:FcrICImt
2021/10/12(火) 20:12:46.01ID:h64P2lE5
2021/10/12(火) 20:15:05.91ID:FcrICImt
2021/10/12(火) 20:16:21.11ID:h64P2lE5
可哀想にww
70デフォルトの名無しさん
2021/10/12(火) 20:19:38.91ID:FcrICImt2021/10/12(火) 20:24:05.47ID:h64P2lE5
2021/10/12(火) 20:25:25.50ID:FcrICImt
2021/10/12(火) 20:26:46.09ID:h64P2lE5
2021/10/12(火) 20:31:54.17ID:FcrICImt
2021/10/12(火) 20:35:37.96ID:h64P2lE5
2021/10/12(火) 20:44:29.90ID:FcrICImt
2021/10/12(火) 20:46:45.57ID:FcrICImt
ID:h64P2lE5は日本語がじゃなくて、考えるのが苦手なんだねw
よくわかったよw
よくわかったよw
2021/10/12(火) 20:47:13.55ID:h64P2lE5
>>76
「それに縛られる」の「それ」ってなに?
exit status のこと?だったら縛られる、というか前提にするに決まってる
シェルスクリプトおよびCがどういう経緯で作られたのか知らんのか
(JCLもその流れのうちに入るだろうという話なんだが、わかってなさげだしな)
「それに縛られる」の「それ」ってなに?
exit status のこと?だったら縛られる、というか前提にするに決まってる
シェルスクリプトおよびCがどういう経緯で作られたのか知らんのか
(JCLもその流れのうちに入るだろうという話なんだが、わかってなさげだしな)
2021/10/12(火) 20:48:42.83ID:h64P2lE5
2021/10/12(火) 20:50:10.79ID:4emiI4KE
81デフォルトの名無しさん
2021/10/12(火) 20:52:05.04ID:elEZT6pO2021/10/12(火) 20:53:48.29ID:FcrICImt
>>78
前提にするのが決まっていようがなんだろうが、そうでなきゃならん理由はないだろw
そして、0を真とするのがプログラミング言語として特殊なことも間違いないなw
それとも0を真とするのは多数派である、と強弁するのか?w
そして、Cは0は偽だよw
前提にするのが決まっていようがなんだろうが、そうでなきゃならん理由はないだろw
そして、0を真とするのがプログラミング言語として特殊なことも間違いないなw
それとも0を真とするのは多数派である、と強弁するのか?w
そして、Cは0は偽だよw
2021/10/12(火) 20:55:08.20ID:FcrICImt
84デフォルトの名無しさん
2021/10/12(火) 20:55:46.77ID:cBlO5Xil >>78
> シェルスクリプトおよびCがどういう経緯で作られたのか知らんのか
シェルスクリプトはC言語から置き換えるために作られた
Unix哲学にはシェルスクリプトの方が移植性が高いとい書いてる
C言語は移植性がないから使い物にならない
Unix哲学ではシェルスクリプトをC言語に書き直すなって書いてある
つまりC言語からシェルスクリプトに書き直すために作られたものだ
シェルスクリプトはどこでも動く!シェルスクリプトで何でも出来る!
POSIX原理主義を信仰せよ!
> シェルスクリプトおよびCがどういう経緯で作られたのか知らんのか
シェルスクリプトはC言語から置き換えるために作られた
Unix哲学にはシェルスクリプトの方が移植性が高いとい書いてる
C言語は移植性がないから使い物にならない
Unix哲学ではシェルスクリプトをC言語に書き直すなって書いてある
つまりC言語からシェルスクリプトに書き直すために作られたものだ
シェルスクリプトはどこでも動く!シェルスクリプトで何でも出来る!
POSIX原理主義を信仰せよ!
2021/10/12(火) 20:56:55.48ID:h64P2lE5
>>82
>前提にするのが決まっていようがなんだろうが、そうでなきゃならん理由はないだろ
むちゃくちゃ言い出しましたーーーwww
あれか?シェルスクリプトってUnixが出る前から何らかの構想があったとでも思い込んでるのかな??
>そして、0を真とするのがプログラミング言語として特殊なことも間違いないなw
だーかーらーーー、真偽に(それもその値に)拘るなら、暗黙的に == 0 が付いてると思えばいいだろw
やっぱりすごいな天才的爆笑王
>前提にするのが決まっていようがなんだろうが、そうでなきゃならん理由はないだろ
むちゃくちゃ言い出しましたーーーwww
あれか?シェルスクリプトってUnixが出る前から何らかの構想があったとでも思い込んでるのかな??
>そして、0を真とするのがプログラミング言語として特殊なことも間違いないなw
だーかーらーーー、真偽に(それもその値に)拘るなら、暗黙的に == 0 が付いてると思えばいいだろw
やっぱりすごいな天才的爆笑王
2021/10/12(火) 20:58:00.87ID:h64P2lE5
2021/10/12(火) 21:02:04.59ID:FcrICImt
>>85
だーかーらーーー、w
==0が付いていると思えばいいとか知ったことじゃないんだよw
お前がそう思いたければ思えよw勝手にしろよw
シェルスクリプトが0を真とする、というところで他と違う=特殊だと
指摘しただけだw
そもそも、なんだって、お前は俺の先生かなんかみたいにになろうとしてんの?w
いくらなんでも、その思考力じゃ自惚れが過ぎない?w
だーかーらーーー、w
==0が付いていると思えばいいとか知ったことじゃないんだよw
お前がそう思いたければ思えよw勝手にしろよw
シェルスクリプトが0を真とする、というところで他と違う=特殊だと
指摘しただけだw
そもそも、なんだって、お前は俺の先生かなんかみたいにになろうとしてんの?w
いくらなんでも、その思考力じゃ自惚れが過ぎない?w
2021/10/12(火) 21:05:16.69ID:h64P2lE5
>>87
お前が「言い張って」「拘ってる」ことに対してなのに
本当にお前ってやつはw「知ったことじゃない」だってwww
>お前は俺の先生かなんかみたいにになろうとしてんの?
>いくらなんでも、その思考力じゃ自惚れが過ぎない?w
wwww 妄想すげーーーーーwwwww
マジですげえなああ、本当にww
ちょっと笑い疲れたぞw
大笑いできるけど、ここまで無知を拗らせてこうなるとある意味怖い面もあるな
大笑いから一息ついて、遠目で考えてみるとww
お前が「言い張って」「拘ってる」ことに対してなのに
本当にお前ってやつはw「知ったことじゃない」だってwww
>お前は俺の先生かなんかみたいにになろうとしてんの?
>いくらなんでも、その思考力じゃ自惚れが過ぎない?w
wwww 妄想すげーーーーーwwwww
マジですげえなああ、本当にww
ちょっと笑い疲れたぞw
大笑いできるけど、ここまで無知を拗らせてこうなるとある意味怖い面もあるな
大笑いから一息ついて、遠目で考えてみるとww
2021/10/12(火) 21:06:02.51ID:C/eJVmIN
2021/10/12(火) 21:07:36.55ID:C/eJVmIN
コピペしやすいように一行にしてやる
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
if (( 2 )); then echo 真; else echo 偽; fi
真
if (( -1 )); then echo 真; else echo 偽; fi
真
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
if (( 2 )); then echo 真; else echo 偽; fi
真
if (( -1 )); then echo 真; else echo 偽; fi
真
2021/10/12(火) 21:07:50.47ID:h64P2lE5
2021/10/12(火) 21:08:44.22ID:C/eJVmIN
2021/10/12(火) 21:09:12.30ID:h64P2lE5
2021/10/12(火) 21:10:27.73ID:FcrICImt
>>88
お前は本当につまらんね。
結局、核心をつかれるとまた罵倒して逃げるだけ。
なんだか九官鳥かなんかと会話している気がしてきたわ。
で、じゃ、いいよな。
シェルスクリプトは真偽の判定において、0を真とする、という点に
おいて特殊である。
これは真である、ということで。
お前は本当につまらんね。
結局、核心をつかれるとまた罵倒して逃げるだけ。
なんだか九官鳥かなんかと会話している気がしてきたわ。
で、じゃ、いいよな。
シェルスクリプトは真偽の判定において、0を真とする、という点に
おいて特殊である。
これは真である、ということで。
2021/10/12(火) 21:11:01.98ID:C/eJVmIN
>>93
読んだ。で?
読んだ。で?
2021/10/12(火) 21:13:31.20ID:h64P2lE5
2021/10/12(火) 21:13:36.59ID:FcrICImt
2021/10/12(火) 21:15:23.86ID:h64P2lE5
2021/10/12(火) 21:19:22.22ID:C/eJVmIN
100デフォルトの名無しさん
2021/10/12(火) 21:22:46.48ID:FcrICImt101デフォルトの名無しさん
2021/10/12(火) 21:23:05.58ID:h64P2lE5102デフォルトの名無しさん
2021/10/12(火) 21:27:53.18ID:FcrICImt 結局、lD:h64P2lE5人の発言にただケチをつけて大物ぶりたがるだけの
ネットチンピラだった、ということでいいよな?w
ネットチンピラだった、ということでいいよな?w
103デフォルトの名無しさん
2021/10/12(火) 21:29:09.94ID:C/eJVmIN じゃあ (( 0 )) は禁止でいいよ。代わりに [ 0 ] 使うからな
if [ 0 ]; then echo 真; else echo 偽; fi
真
if [ 1 ]; then echo 真; else echo 偽; fi
真
if [ 2 ]; then echo 真; else echo 偽; fi
真
if [ -1 ]; then echo 真; else echo 偽; fi
真
あれれー?全部真じゃねーか。
どう説明してくれるのかな?
if [ 0 ]; then echo 真; else echo 偽; fi
真
if [ 1 ]; then echo 真; else echo 偽; fi
真
if [ 2 ]; then echo 真; else echo 偽; fi
真
if [ -1 ]; then echo 真; else echo 偽; fi
真
あれれー?全部真じゃねーか。
どう説明してくれるのかな?
104デフォルトの名無しさん
2021/10/12(火) 21:30:19.79ID:h64P2lE5105デフォルトの名無しさん
2021/10/12(火) 21:31:42.55ID:FcrICImt106デフォルトの名無しさん
2021/10/12(火) 21:32:46.07ID:FcrICImt107デフォルトの名無しさん
2021/10/12(火) 21:32:54.54ID:h64P2lE5 >>103
testコマンドの結果(testコマンドが終わるときのExit Statusの値)でしかない
testコマンドに何故なのか書いてあるだろう
シェルスクリプトの話ではない=シェルはそれに関係してないよ
testコマンドの結果(testコマンドが終わるときのExit Statusの値)でしかない
testコマンドに何故なのか書いてあるだろう
シェルスクリプトの話ではない=シェルはそれに関係してないよ
108デフォルトの名無しさん
2021/10/12(火) 21:34:55.96ID:h64P2lE5109デフォルトの名無しさん
2021/10/12(火) 21:36:55.49ID:FcrICImt110デフォルトの名無しさん
2021/10/12(火) 21:38:27.71ID:h64P2lE5 >>103,107
string True if string is not the null string.
これだな
>あれれー?全部真じゃねーか。
>どう説明してくれるのかな?
わかったならもう出る必要ないぞ
string True if string is not the null string.
これだな
>あれれー?全部真じゃねーか。
>どう説明してくれるのかな?
わかったならもう出る必要ないぞ
111デフォルトの名無しさん
2021/10/12(火) 21:39:03.20ID:C/eJVmIN >>106
やりなおしじゃねーよ。
重要なことだろ
お前が言ってる真とか偽の話は、testコマンドの話であって
シェルスクリプトと関係ねーんだよ
if [ 0 ]; then echo 真; else echo 偽; fi
真
if [ 1 ]; then echo 真; else echo 偽; fi
真
両方が真になる理由を言ってみろ
testコマンドの仕様じゃねーか
やりなおしじゃねーよ。
重要なことだろ
お前が言ってる真とか偽の話は、testコマンドの話であって
シェルスクリプトと関係ねーんだよ
if [ 0 ]; then echo 真; else echo 偽; fi
真
if [ 1 ]; then echo 真; else echo 偽; fi
真
両方が真になる理由を言ってみろ
testコマンドの仕様じゃねーか
112デフォルトの名無しさん
2021/10/12(火) 21:39:44.50ID:h64P2lE5113デフォルトの名無しさん
2021/10/12(火) 21:39:46.50ID:C/eJVmIN114デフォルトの名無しさん
2021/10/12(火) 21:41:24.99ID:C/eJVmIN 一方こっちはPOSIXシェルじゃないってだけで
シェルスクリプト仕様なんだわ
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
((コマンドなんてないからな
シェルスクリプト仕様なんだわ
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
((コマンドなんてないからな
115デフォルトの名無しさん
2021/10/12(火) 21:41:30.85ID:FcrICImt116デフォルトの名無しさん
2021/10/12(火) 21:41:41.05ID:h64P2lE5117デフォルトの名無しさん
2021/10/12(火) 21:43:37.74ID:C/eJVmIN testコマンドじゃなくexprコマンドを使えば
この通り0が偽で1が真になる
$ if expr 0; then echo 真; else echo 偽; fi
0
偽
$ if expr 1; then echo 真; else echo 偽; fi
1
真
シェルスクリプトと同じ結果
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
この通り0が偽で1が真になる
$ if expr 0; then echo 真; else echo 偽; fi
0
偽
$ if expr 1; then echo 真; else echo 偽; fi
1
真
シェルスクリプトと同じ結果
if (( 0 )); then echo 真; else echo 偽; fi
偽
if (( 1 )); then echo 真; else echo 偽; fi
真
118デフォルトの名無しさん
2021/10/12(火) 21:44:05.98ID:h64P2lE5119デフォルトの名無しさん
2021/10/12(火) 21:46:49.43ID:h64P2lE5120デフォルトの名無しさん
2021/10/12(火) 21:47:41.25ID:FcrICImt121デフォルトの名無しさん
2021/10/12(火) 21:48:49.34ID:h64P2lE5122デフォルトの名無しさん
2021/10/12(火) 21:48:50.32ID:C/eJVmIN >>119
何がいいたいのか知らんが、testは0も1も真、空文字は偽
何がいいたいのか知らんが、testは0も1も真、空文字は偽
123デフォルトの名無しさん
2021/10/12(火) 21:50:51.74ID:h64P2lE5124デフォルトの名無しさん
2021/10/12(火) 22:35:55.85ID:Z5ErQaW5 すんげー伸びてるな
125デフォルトの名無しさん
2021/10/12(火) 22:37:31.32ID:FcrICImt126デフォルトの名無しさん
2021/10/12(火) 22:54:40.85ID:h64P2lE5127デフォルトの名無しさん
2021/10/12(火) 23:00:34.01ID:FcrICImt128デフォルトの名無しさん
2021/10/12(火) 23:04:22.32ID:h64P2lE5129デフォルトの名無しさん
2021/10/12(火) 23:05:45.70ID:h64P2lE5130デフォルトの名無しさん
2021/10/12(火) 23:07:56.95ID:FcrICImt >>128
だからちゃんと自分のレスを読み返してねw
間違ってるぞw
testとexprの終了コードは同じじゃないぞw
もう面倒だから、これ以上の指摘もしないけど。
つか、このスレこんな自称「プロ」みたいのが常駐してんの?w
うへぇw
だからちゃんと自分のレスを読み返してねw
間違ってるぞw
testとexprの終了コードは同じじゃないぞw
もう面倒だから、これ以上の指摘もしないけど。
つか、このスレこんな自称「プロ」みたいのが常駐してんの?w
うへぇw
131デフォルトの名無しさん
2021/10/12(火) 23:12:44.17ID:h64P2lE5 >>130
...すんげー読めなさぶりを発揮してくれちゃってもうwwwww
本当にお前はwww
誰も評価が同じとは言ってない。そこかよwww
exprだろうがtestだろうがコマンド[の](独自とか独特とか何でもいいけどそんなん)でしかないと読めると思ったんだがなあ
[の]の後に何が続くかも読めないのか...何が続くと思ったのだろう?いや続くとは思わなかったのか??不思議だなあ
(
日本語日本語とお前は言ってるが、日本語小説読めないぞそんなんじゃ。読まない読めないのか?)
...すんげー読めなさぶりを発揮してくれちゃってもうwwwww
本当にお前はwww
誰も評価が同じとは言ってない。そこかよwww
exprだろうがtestだろうがコマンド[の](独自とか独特とか何でもいいけどそんなん)でしかないと読めると思ったんだがなあ
[の]の後に何が続くかも読めないのか...何が続くと思ったのだろう?いや続くとは思わなかったのか??不思議だなあ
(
日本語日本語とお前は言ってるが、日本語小説読めないぞそんなんじゃ。読まない読めないのか?)
132デフォルトの名無しさん
2021/10/12(火) 23:23:38.49ID:FcrICImt133デフォルトの名無しさん
2021/10/12(火) 23:25:37.38ID:h64P2lE5134デフォルトの名無しさん
2021/10/12(火) 23:28:04.77ID:FcrICImt135デフォルトの名無しさん
2021/10/12(火) 23:32:03.22ID:h64P2lE5136デフォルトの名無しさん
2021/10/12(火) 23:38:40.11ID:h64P2lE5 >>134
華麗にスルーされたけどさ、
前スレ>>989なんて言ってるけど、確かにWindows APIはBooleanで返すのが多い
だがそれはWindows APIの文化でしかない、シェルスクリプトの本家wであるUnixで何か書いたことがあるなら文化が違うとわかりそうなもんだが、なぜかWindows APIのが全てと言ってそうな前スレ>>989
WSLからのにわかか?
って、合ってる?w
あと、宮城県に住んでいたりする?w
日付も変わるし、>>11,12以降何も意味あることないからw(互いになww)、もう締めようかと
で、>>12での俺の疑問と、後はなんかソレっぽい(まあ、無いと思うけど)確認したいんだけどw
華麗にスルーされたけどさ、
前スレ>>989なんて言ってるけど、確かにWindows APIはBooleanで返すのが多い
だがそれはWindows APIの文化でしかない、シェルスクリプトの本家wであるUnixで何か書いたことがあるなら文化が違うとわかりそうなもんだが、なぜかWindows APIのが全てと言ってそうな前スレ>>989
WSLからのにわかか?
って、合ってる?w
あと、宮城県に住んでいたりする?w
日付も変わるし、>>11,12以降何も意味あることないからw(互いになww)、もう締めようかと
で、>>12での俺の疑問と、後はなんかソレっぽい(まあ、無いと思うけど)確認したいんだけどw
137デフォルトの名無しさん
2021/10/12(火) 23:50:54.06ID:FcrICImt とうとう変なゲスの勘繰りまで始めた…w
いや、読めんよ、これはw本当にw
もしかして、頭がおかしいのだろうかね…
いや、読めんよ、これはw本当にw
もしかして、頭がおかしいのだろうかね…
138デフォルトの名無しさん
2021/10/12(火) 23:53:59.72ID:h64P2lE5 >>137
「ゲスの勘ぐり」wwww
散々してる、お前が言うなーーーーーーーwwwww
すげえなあ
ちゃんと理由書いてるからな、最初のは
後のは特定w有名人に似すすぎてな、その自己完結して他の人の指摘を聞き入れない頑固さ自己防衛意識wだけなのは
「ゲスの勘ぐり」wwww
散々してる、お前が言うなーーーーーーーwwwww
すげえなあ
ちゃんと理由書いてるからな、最初のは
後のは特定w有名人に似すすぎてな、その自己完結して他の人の指摘を聞き入れない頑固さ自己防衛意識wだけなのは
139デフォルトの名無しさん
2021/10/12(火) 23:55:07.90ID:FcrICImt え?俺がゲスの勘繰り?
一体なんのことだよw
完全に狂人だなw
一体なんのことだよw
完全に狂人だなw
140デフォルトの名無しさん
2021/10/12(火) 23:57:17.44ID:FcrICImt さすがにID:h64P2lE5みたいなのと会話するのはちょっと神ならぬ我が身では無理、
だな。
犬に噛まれたと思って諦めるよ
だな。
犬に噛まれたと思って諦めるよ
141デフォルトの名無しさん
2021/10/12(火) 23:58:27.76ID:h64P2lE5 >>139
すげえよww(マジ似すぎwwww)
俺に対して「こうじゃないか」とお前は散々言っているんだがな、根拠全くなく(=外れてるから)
いや、お前のは「こうだ」と決めつけてるけどな。俺はお伺いしてるんだから謙虚wwだろう?w
すげえよww(マジ似すぎwwww)
俺に対して「こうじゃないか」とお前は散々言っているんだがな、根拠全くなく(=外れてるから)
いや、お前のは「こうだ」と決めつけてるけどな。俺はお伺いしてるんだから謙虚wwだろう?w
142デフォルトの名無しさん
2021/10/12(火) 23:59:20.25ID:h64P2lE5 >>140
だから、その独善っぷりがなあ、似すぎなんだよwww
だから、その独善っぷりがなあ、似すぎなんだよwww
143デフォルトの名無しさん
2021/10/13(水) 00:02:02.99ID:2M6ScVbl YESかNOで済む話なのに、何で答えるのに拘るのか
別にNOでもそれ以上突っ込むことは無いのに
まあ、なんかわけわからんプライドからだったりするんだろうな
NOすら貰えなくて残念だったわ
じゃあ、また会おうw
別にNOでもそれ以上突っ込むことは無いのに
まあ、なんかわけわからんプライドからだったりするんだろうな
NOすら貰えなくて残念だったわ
じゃあ、また会おうw
144デフォルトの名無しさん
2021/10/13(水) 01:33:02.11ID:D0IOdnVZ145デフォルトの名無しさん
2021/10/13(水) 01:41:33.26ID:NYsNQvj4 またシェルショッカーかリッチー大佐がきてんのか?
146デフォルトの名無しさん
2021/10/13(水) 03:10:56.51ID:1yE1KkPz 放射能にやられて放射脳なんだろうな
147デフォルトの名無しさん
2021/10/13(水) 05:40:01.42ID:DA35qh3D148デフォルトの名無しさん
2021/10/13(水) 05:46:10.75ID:DA35qh3D149デフォルトの名無しさん
2021/10/13(水) 05:53:56.92ID:DA35qh3D150デフォルトの名無しさん
2021/10/13(水) 10:39:03.69ID:QRtQ0cE0 レスバ乙。
最後に俺がまとめてやんよ。
終了ステータス0を真と見なすのはifコマンドの仕様です。
これでスッキリするな。
最後に俺がまとめてやんよ。
終了ステータス0を真と見なすのはifコマンドの仕様です。
これでスッキリするな。
151デフォルトの名無しさん
2021/10/13(水) 10:58:37.46ID:Qk99MJFD152デフォルトの名無しさん
2021/10/13(水) 10:59:40.01ID:Qk99MJFD $?を知らない人もいるのかな
153デフォルトの名無しさん
2021/10/13(水) 11:05:00.12ID:V99uCirA まだやってたのか
>シェルスクリプトだけじゃなくてC言語も成功は0を返さないとだめだって言ってんだろ
仕様書嫁
>シェルスクリプトだけじゃなくてC言語も成功は0を返さないとだめだって言ってんだろ
仕様書嫁
154デフォルトの名無しさん
2021/10/13(水) 11:07:10.05ID:V99uCirA155デフォルトの名無しさん
2021/10/13(水) 11:09:43.80ID:V99uCirA >>11 は馬鹿確定
156デフォルトの名無しさん
2021/10/13(水) 11:13:26.44ID:V99uCirA >>12
Windows API は Boolean を返す関数が 0/1 以外に負の数を返したり普通にあるからな
Windows API は Boolean を返す関数が 0/1 以外に負の数を返したり普通にあるからな
157デフォルトの名無しさん
2021/10/13(水) 11:18:51.98ID:2R4gu/cR どっちもどっち
ここまでコミュ力低いやつらはリアルで見たことないわ
運がいいのかこいつらがよほど特殊なのか
ここまでコミュ力低いやつらはリアルで見たことないわ
運がいいのかこいつらがよほど特殊なのか
158デフォルトの名無しさん
2021/10/13(水) 12:41:04.06ID:D0IOdnVZ159デフォルトの名無しさん
2021/10/13(水) 12:48:29.67ID:D0IOdnVZ160デフォルトの名無しさん
2021/10/13(水) 12:58:08.61ID:D0IOdnVZ161デフォルトの名無しさん
2021/10/13(水) 13:11:44.87ID:Qk99MJFD162デフォルトの名無しさん
2021/10/13(水) 13:13:43.98ID:Qk99MJFD163デフォルトの名無しさん
2021/10/13(水) 14:52:00.13ID:D0IOdnVZ164デフォルトの名無しさん
2021/10/13(水) 14:54:53.19ID:D0IOdnVZ165デフォルトの名無しさん
2021/10/14(木) 10:43:45.22ID:6CSRvSwi まだやってんのかよ、このスレきもちわるいな
166デフォルトの名無しさん
2021/10/14(木) 12:37:09.51ID:JcLc7tQv >>165
すでに終わってるのに無理に絡むおまえのがキモいぞ
すでに終わってるのに無理に絡むおまえのがキモいぞ
167デフォルトの名無しさん
2021/10/16(土) 21:47:00.16ID:D7GMWgGE シェルスクリプト使いにとってキモいは褒め言葉。
つか何でposixに終了ステータス0はtrue、1はfalseって書いてあんのに揉めてるの?
つか何でposixに終了ステータス0はtrue、1はfalseって書いてあんのに揉めてるの?
168デフォルトの名無しさん
2021/10/17(日) 00:10:56.78ID:/rMY6gHo169デフォルトの名無しさん
2021/10/17(日) 06:17:14.04ID:evqBS6BP >>168
ggrks
ggrks
170デフォルトの名無しさん
2021/10/17(日) 06:22:08.32ID:y+jMo+pm 127 や 126、1 から 125 にとは書いてるから >>167は明らかに嘘だな
171デフォルトの名無しさん
2021/10/17(日) 06:29:47.67ID:y+jMo+pm172デフォルトの名無しさん
2021/10/17(日) 06:33:21.39ID:8eKBj5MQ このようにどこに書いてあるのかを言えという
当たり前の質問にも答えられないわけですよ(笑)
当たり前の質問にも答えられないわけですよ(笑)
173デフォルトの名無しさん
2021/10/17(日) 06:35:49.92ID:Twny38mx174デフォルトの名無しさん
2021/10/17(日) 07:02:09.17ID:evqBS6BP >>171
えと、本気で理解できないんだが詳しく教えてもらえないでしょうか。
えと、本気で理解できないんだが詳しく教えてもらえないでしょうか。
175デフォルトの名無しさん
2021/10/17(日) 10:23:03.90ID:8eKBj5MQ176デフォルトの名無しさん
2021/10/17(日) 11:00:47.95ID:DWmfIprR177デフォルトの名無しさん
2021/10/17(日) 11:07:01.52ID:DWmfIprR178デフォルトの名無しさん
2021/10/17(日) 12:11:19.76ID:evqBS6BP >>175
どこにってのは、どの項目かよく見ろと暗に示してるのかな?
sh
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/sh.html
EXIT STATUS
The following exit values shall be returned:
0
The script to be executed consisted solely of zero or more blank lines or comments, or both.
1-125
A non-interactive shell detected an error other than command_file not found or executable, including but not limited to syntax, redirection, or variable assignment errors.
126
A specified command_file could not be executed due to an [ENOEXEC] error (see Command Search and Execution, item 2).
127
A specified command_file could not be found by a non-interactive shell.
test
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/test.html
EXIT STATUS
The following exit values shall be returned:
0
expression evaluated to true.
1
expression evaluated to false or expression was missing.
>1
An error occurred.
>>177
理解しました。
どこにってのは、どの項目かよく見ろと暗に示してるのかな?
sh
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/sh.html
EXIT STATUS
The following exit values shall be returned:
0
The script to be executed consisted solely of zero or more blank lines or comments, or both.
1-125
A non-interactive shell detected an error other than command_file not found or executable, including but not limited to syntax, redirection, or variable assignment errors.
126
A specified command_file could not be executed due to an [ENOEXEC] error (see Command Search and Execution, item 2).
127
A specified command_file could not be found by a non-interactive shell.
test
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/test.html
EXIT STATUS
The following exit values shall be returned:
0
expression evaluated to true.
1
expression evaluated to false or expression was missing.
>1
An error occurred.
>>177
理解しました。
179デフォルトの名無しさん
2021/10/17(日) 13:22:52.78ID:4nH2b59z180デフォルトの名無しさん
2021/10/17(日) 14:36:53.55ID:7C23oe5i181デフォルトの名無しさん
2021/10/17(日) 14:38:28.76ID:7C23oe5i182デフォルトの名無しさん
2021/10/17(日) 14:50:31.56ID:VtgDJrjp >>177
ture/false コマンドに(Exit Status) 0 および1を返すと書いてある
testコマンドに評価としてtrueとは書いてあるが、それは評価としてでその値が1なのか0なのかというのではないという理解だけど
POSIXに書いてあるという話なら
ture/false コマンドに(Exit Status) 0 および1を返すと書いてある
testコマンドに評価としてtrueとは書いてあるが、それは評価としてでその値が1なのか0なのかというのではないという理解だけど
POSIXに書いてあるという話なら
183デフォルトの名無しさん
2021/10/17(日) 15:28:23.08ID:N+Nl+RmC ぱっと流れを見てきただけだが、
[]/test コマンドの評価が真で0を返すってところからはじまって、
他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの?
これをもって終了ステータス0が真を意味するってわけじゃないよねぇ
日本語と英語で、否定文に対する同意にyes/noが反対になるのと似てると思う
前者は否定文それ自体、後者は事象全体について、それぞれ評価してるよね
[]/test コマンドの評価が真で0を返すってところからはじまって、
他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの?
これをもって終了ステータス0が真を意味するってわけじゃないよねぇ
日本語と英語で、否定文に対する同意にyes/noが反対になるのと似てると思う
前者は否定文それ自体、後者は事象全体について、それぞれ評価してるよね
184デフォルトの名無しさん
2021/10/17(日) 15:57:56.52ID:VtgDJrjp >>177
trueコマンドのExit Statusは0、falseコマンドのExit Statusは1
評価した結果trueならExit Statusは0、falseならExit Statusは1
てことででの、trueは0、falseは1 (のExit Status) になるでしょ??
testコマンド(など)で書いてるtrueは一般的な文上でのtrue(例えばtest条件に一致する=真)と読んでるけどなあ
って、よく読んだら同じこと言ってるのか。シェル内部(?)の部分の話かそれ>>177は
Exit Status が 0だったらtrue、1だったらfalse と評価されることは正しいが
(ここはわかる)
trueは0、falseは1(の値をあらわすこと)は正しくない
(言いたいことはなんとなくわかるしだったら否定はしないが、うーむ)
>>171は、
>終了ステータスは、
から始まってるとおり(上にも書いたけど)、
trueは0、falseは1は正しいが (そういうExit Statusになる)
だからといって、
シェルスクリプト上で 0はtrue、1はfalse(と見なすのは)正しくない
てこと。下は「trueは0、falseは1(の値をあらわすこと)は正しくない」と同じ意味だわな
trueコマンドのExit Statusは0、falseコマンドのExit Statusは1
評価した結果trueならExit Statusは0、falseならExit Statusは1
てことででの、trueは0、falseは1 (のExit Status) になるでしょ??
testコマンド(など)で書いてるtrueは一般的な文上でのtrue(例えばtest条件に一致する=真)と読んでるけどなあ
って、よく読んだら同じこと言ってるのか。シェル内部(?)の部分の話かそれ>>177は
Exit Status が 0だったらtrue、1だったらfalse と評価されることは正しいが
(ここはわかる)
trueは0、falseは1(の値をあらわすこと)は正しくない
(言いたいことはなんとなくわかるしだったら否定はしないが、うーむ)
>>171は、
>終了ステータスは、
から始まってるとおり(上にも書いたけど)、
trueは0、falseは1は正しいが (そういうExit Statusになる)
だからといって、
シェルスクリプト上で 0はtrue、1はfalse(と見なすのは)正しくない
てこと。下は「trueは0、falseは1(の値をあらわすこと)は正しくない」と同じ意味だわな
185デフォルトの名無しさん
2021/10/17(日) 16:08:04.69ID:VtgDJrjp >>183
>[]/test コマンドの評価が真で0を返すってところからはじまって、
>他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの?
Unixで動くプログラムはExit Statusが問題なければ 0、問題あればそれ以外というとこからはじまってかな。testコマンドもそれに合わせてのような
Unixを作る上でのOSのUnixとしてのExit Statusとはどういうものかというのは最も先に考えるだろうから、そこからはじまってかな
>[]/test コマンドの評価が真で0を返すってところからはじまって、
>他のコマンドの返り値もこれにならって処理成功で0を返すようになったというだけじゃないの?
Unixで動くプログラムはExit Statusが問題なければ 0、問題あればそれ以外というとこからはじまってかな。testコマンドもそれに合わせてのような
Unixを作る上でのOSのUnixとしてのExit Statusとはどういうものかというのは最も先に考えるだろうから、そこからはじまってかな
186デフォルトの名無しさん
2021/10/17(日) 16:26:50.30ID:gRTtAvmG いまでも 0〜255 なんですか
256 以上とか
0 未満とか
ありえないんですか?
256 以上とか
0 未満とか
ありえないんですか?
187デフォルトの名無しさん
2021/10/17(日) 16:36:48.76ID:VtgDJrjp 8ビットいっぱいでの値(=unsigned char)となってるね、POSIXでは
int main( ... ) だから、失敗なんぞで -1 をreturn できる(エラーにはならない)が、255になったりするねえ
int main( ... ) だから、失敗なんぞで -1 をreturn できる(エラーにはならない)が、255になったりするねえ
188デフォルトの名無しさん
2021/10/17(日) 16:50:37.61ID:8eKBj5MQ ん?まさか、trueコマンドとfalseコマンドを
真偽値のtrue/falseのことだって勘違いしてる?
いやそんなアホはいないよねw
終了ステータスは数値であって
true/falseじゃないよ
はっきりした
真偽値のtrue/falseのことだって勘違いしてる?
いやそんなアホはいないよねw
終了ステータスは数値であって
true/falseじゃないよ
はっきりした
189デフォルトの名無しさん
2021/10/17(日) 16:59:10.58ID:VtgDJrjp ただの独りよがり、マウントだけは取りたがり
まあわかったようなのでいいけど
まあわかったようなのでいいけど
190デフォルトの名無しさん
2021/10/17(日) 17:35:18.24ID:8eKBj5MQ >>183
終了ステータスは昔から0が正常終了、それ以外が異常終了という意味
シェルスクリプトのifは正常終了の場合にthenの中身を実行する
それだけの話なのに真とか偽とか、trueとかfalseとか
言ってるやつがいるだけ
trueコマンドは正常終了を返す
fasleコマンドは異常終了を返す
ifは正常終了か異常終了かで処理を分岐させるもので
真か偽かで処理を分岐させるものではない
終了ステータスは昔から0が正常終了、それ以外が異常終了という意味
シェルスクリプトのifは正常終了の場合にthenの中身を実行する
それだけの話なのに真とか偽とか、trueとかfalseとか
言ってるやつがいるだけ
trueコマンドは正常終了を返す
fasleコマンドは異常終了を返す
ifは正常終了か異常終了かで処理を分岐させるもので
真か偽かで処理を分岐させるものではない
191デフォルトの名無しさん
2021/10/17(日) 17:37:48.32ID:VtgDJrjp192デフォルトの名無しさん
2021/10/17(日) 17:41:45.55ID:8eKBj5MQ 反論がないなら黙っとれ
193デフォルトの名無しさん
2021/10/17(日) 17:48:01.87ID:VtgDJrjp 誰とは言わんがw某君は自分で調べることも探すこともできないは明らかだが、
そこからくる無知がコンプレックスからなんだろうなその常時上から目線すぐに誤魔化す癖なのは
と思われるw
そこからくる無知がコンプレックスからなんだろうなその常時上から目線すぐに誤魔化す癖なのは
と思われるw
194デフォルトの名無しさん
2021/10/17(日) 19:16:51.89ID:evqBS6BP >>190
例えばカーニハン、ロブパイク共著のTHE UNIX PROGRAMMING ENVIRONMENT のp140のif構文の説明には
if command
then
commands if condition true
else
command if condition false
do
と書かれている。P145のwhile untilの説明にもtrueとfalseが使われている。
あなたの言いたい事は分かる、というかみんなわかってる。ただ、昔からの習慣をぶった切って何が得なのか分からない。
例えばカーニハン、ロブパイク共著のTHE UNIX PROGRAMMING ENVIRONMENT のp140のif構文の説明には
if command
then
commands if condition true
else
command if condition false
do
と書かれている。P145のwhile untilの説明にもtrueとfalseが使われている。
あなたの言いたい事は分かる、というかみんなわかってる。ただ、昔からの習慣をぶった切って何が得なのか分からない。
195デフォルトの名無しさん
2021/10/17(日) 19:34:34.14ID:8eKBj5MQ 「条件が真」というのは真偽値とは別の話だよ
条件とセットになってないといけない
何が真かどうかは条件文つまりコマンドによって変わる
値だけをみて真かどうかなんてわからない
条件とセットになってないといけない
何が真かどうかは条件文つまりコマンドによって変わる
値だけをみて真かどうかなんてわからない
196デフォルトの名無しさん
2021/10/17(日) 19:37:39.52ID:8eKBj5MQ 例えばexprという条件文は、1(0以外)が真で、0が偽
testという条件文は、文字列の長さがあれば真で、空文字なら偽
だからtestの場合は0も1も真だし、testの演算子を使えば、それに応じて結果も変わる
どの値が真か偽かなんてわからない
少なくともexprでは0は偽
testという条件文は、文字列の長さがあれば真で、空文字なら偽
だからtestの場合は0も1も真だし、testの演算子を使えば、それに応じて結果も変わる
どの値が真か偽かなんてわからない
少なくともexprでは0は偽
197デフォルトの名無しさん
2021/10/17(日) 21:21:40.04ID:evqBS6BP >>195-196
つまりスクリプトの文脈や使うコマンドに依存するって事ですよね。それは誰でも知っている。
全てに共通では無いからと言ってif文の話の時ですらtrue falseと言う言い方、表現を認めないと言うのはそれこそ文脈無視。何でそこまでtrue falseを否定するの?
つまりスクリプトの文脈や使うコマンドに依存するって事ですよね。それは誰でも知っている。
全てに共通では無いからと言ってif文の話の時ですらtrue falseと言う言い方、表現を認めないと言うのはそれこそ文脈無視。何でそこまでtrue falseを否定するの?
198デフォルトの名無しさん
2021/10/17(日) 22:06:34.19ID:wfDs6PxW >>190で完全におわってるんだけど何が不満なんだよw
199デフォルトの名無しさん
2021/10/17(日) 22:32:05.95ID:8eKBj5MQ200デフォルトの名無しさん
2021/10/17(日) 22:53:52.24ID:RKnKEp2y >ifは正常終了か異常終了かで処理を分岐させるもので
>真か偽かで処理を分岐させるものではない
そこが普通のプログラミング言語と違うから
混乱することあるよねって話だったんじゃ?
>真か偽かで処理を分岐させるものではない
そこが普通のプログラミング言語と違うから
混乱することあるよねって話だったんじゃ?
201デフォルトの名無しさん
2021/10/17(日) 23:53:53.96ID:DWmfIprR >>200
混乱するよな、だったら、そうやな、で終わってた。
ところが、混乱した頭でムリヤリ合理化して、シェルスクリプトとC言語に真偽を融合した大統一理論wを主張されたら、そりゃあ黙ってはおれん。
いや、スルーしてもええんやけど、イジったらおもろいやん?
混乱するよな、だったら、そうやな、で終わってた。
ところが、混乱した頭でムリヤリ合理化して、シェルスクリプトとC言語に真偽を融合した大統一理論wを主張されたら、そりゃあ黙ってはおれん。
いや、スルーしてもええんやけど、イジったらおもろいやん?
202デフォルトの名無しさん
2021/10/17(日) 23:59:20.58ID:DWmfIprR203デフォルトの名無しさん
2021/10/18(月) 00:47:48.71ID:JsauePnn >>202
元々に合わせてのなんだけどな
基本的に元のレスに合わせる感じ、なんか断定的に書いてたりしたら、ひとりごちでわかったように書いてたらw
(true/falseってコマンドが真っ先にじゃね?wともあってなあ。シェルスクリプトでtrue/false書くのはコマンドのだし)
元々に合わせてのなんだけどな
基本的に元のレスに合わせる感じ、なんか断定的に書いてたりしたら、ひとりごちでわかったように書いてたらw
(true/falseってコマンドが真っ先にじゃね?wともあってなあ。シェルスクリプトでtrue/false書くのはコマンドのだし)
204デフォルトの名無しさん
2021/10/18(月) 01:12:06.51ID:JsauePnn >真っ先にじゃね?wともあってなあ
真っ先にじゃね?wともあってなあ、「わかるだろ」と親切心w皆無(何故かは書いた通りw)なこともあり
てことね
真っ先にじゃね?wともあってなあ、「わかるだろ」と親切心w皆無(何故かは書いた通りw)なこともあり
てことね
205デフォルトの名無しさん
2021/10/18(月) 02:50:01.04ID:mrfOLNSK おまいMbだろ
206デフォルトの名無しさん
2021/10/18(月) 05:37:03.73ID:0o1cEYf8 >>194
ホントにdoって書いてあるの?
ホントにdoって書いてあるの?
207デフォルトの名無しさん
2021/10/18(月) 07:42:47.78ID:9KKYdoU5208デフォルトの名無しさん
2021/10/18(月) 08:55:39.51ID:9KKYdoU5 >>200
Ifに関しては普通のプログラムも真かそれ以外かだと思うけど。
Ifに関しては普通のプログラムも真かそれ以外かだと思うけど。
209デフォルトの名無しさん
2021/10/18(月) 08:57:21.08ID:9KKYdoU5 >>208
失礼、プログラムじゃなくてプログラミング言語
失礼、プログラムじゃなくてプログラミング言語
210デフォルトの名無しさん
2021/10/18(月) 09:19:48.79ID:7yYa42Qv211デフォルトの名無しさん
2021/10/18(月) 10:24:02.43ID:1Sg888+/ >>208
何が真/偽と評価されるかの話に、抽象化された一般論で割り込むな。
何が真/偽と評価されるかの話に、抽象化された一般論で割り込むな。
212デフォルトの名無しさん
2021/10/18(月) 10:32:14.58ID:sM+wOftf >>208
普通のプログラム言語は式が真かそれ以外と評価される
シェルスクリプトはコマンドの実行結果が真かそれ以外と評価される
例えば C言語で if (foo(0)) { ... } とあったとき、
0は真だと思うかね?偽だと思うかね?
それと同じことだよ
普通のプログラム言語は式が真かそれ以外と評価される
シェルスクリプトはコマンドの実行結果が真かそれ以外と評価される
例えば C言語で if (foo(0)) { ... } とあったとき、
0は真だと思うかね?偽だと思うかね?
それと同じことだよ
213デフォルトの名無しさん
2021/10/20(水) 04:35:22.97ID:tjBtBq8J Mb
>プログラミング言語どころかコンピュータのことすら
理解していない奴が荒らしにきているわけだ。
初心者はもちろん歓迎するのだが、
邪魔する奴は全力でツブす
という、怖ろしい連中がいることを肝に銘じてほしい。」
>プログラミング言語どころかコンピュータのことすら
理解していない奴が荒らしにきているわけだ。
初心者はもちろん歓迎するのだが、
邪魔する奴は全力でツブす
という、怖ろしい連中がいることを肝に銘じてほしい。」
214デフォルトの名無しさん
2021/10/20(水) 10:02:20.45ID:BWdzBBaJ すぐに特定されそうなレスをよく書ける
215デフォルトの名無しさん
2021/10/20(水) 10:35:57.56ID:UVUG50tp >>213
お前私怨が文から溢れすぎ
お前私怨が文から溢れすぎ
216デフォルトの名無しさん
2021/10/23(土) 03:05:44.21ID:46fTSgYa ! [ -n 'これ?' ]
[ ! -n 'それともこれ?' ]
[ ! -n 'それともこれ?' ]
217デフォルトの名無しさん
2021/10/23(土) 08:05:12.92ID:TpylJdXD [ 自体がコマンドなので自ずからわかるでしょう
218デフォルトの名無しさん
2021/10/24(日) 00:23:08.92ID:Ku/iA6Hb 好きにだな
シェルがやる(汎用)のかコマンドがやる(独自)のかの違い
得られるのは同じ
シェルがやる(汎用)のかコマンドがやる(独自)のかの違い
得られるのは同じ
219デフォルトの名無しさん
2021/10/24(日) 23:07:32.27ID:egBH1Q0S [] の中に入ってるほうがすき
220デフォルトの名無しさん
2021/10/26(火) 05:10:22.39ID:NvoOVavJ 論理反転できないコマンドは外に!書くしかないしな
221デフォルトの名無しさん
2021/10/26(火) 09:33:58.13ID:Y5xWPagQ222デフォルトの名無しさん
2021/10/26(火) 10:12:21.51ID:sjaXXoqx223デフォルトの名無しさん
2021/11/07(日) 20:05:32.87ID:xhLNYeNd shでmain関数を定義して
ループ内で main & すればサブプロセスで動いてくれてechoしたときの出力も全部表示されるやん?
powershellで同じことしたいのにできひんねんけど誰か教えてくれ
ループ内で main & すればサブプロセスで動いてくれてechoしたときの出力も全部表示されるやん?
powershellで同じことしたいのにできひんねんけど誰か教えてくれ
224デフォルトの名無しさん
2021/11/08(月) 04:06:00.33ID:jye9PFXO さすがにPowerShellのスレで聞きなよ
225デフォルトの名無しさん
2021/11/08(月) 08:18:35.84ID:7h7MJ4sx226デフォルトの名無しさん
2021/11/15(月) 11:58:25.47ID:SlSQecoN cshの書籍って何がおすすめですか。
すごく初心者です。
すごく初心者です。
227デフォルトの名無しさん
2021/11/15(月) 12:01:56.43ID:P0qC0lwO 初心者は、cshなんか使わないほうが?
BashかPerlのほうが!
BashかPerlのほうが!
228デフォルトの名無しさん
2021/11/15(月) 14:15:42.51ID:o0383L8J すごく初心者はいきなりcshとかやらずに
コンピュータの仕組みを理解するのが先だと思う
コンピュータの仕組みを理解するのが先だと思う
229デフォルトの名無しさん
2021/11/15(月) 14:28:42.54ID:2zWqj8FL ありがとうございます。
linuxは業務で触っていて
基本的なコマンドは知っています。
苦手ではありますが。
ハード屋なのですが
c言語、matlab、vba辺りの
コードは書いていました。
会社のメンバーが
cshで実行するスクリプトを
多用していて理解したり
自分で書いたりする必要が
発生しました。
linuxは業務で触っていて
基本的なコマンドは知っています。
苦手ではありますが。
ハード屋なのですが
c言語、matlab、vba辺りの
コードは書いていました。
会社のメンバーが
cshで実行するスクリプトを
多用していて理解したり
自分で書いたりする必要が
発生しました。
230デフォルトの名無しさん
2021/11/15(月) 15:15:05.60ID:kskWe0RM cshを常用してるって50代後半以上の人たち?
231デフォルトの名無しさん
2021/11/15(月) 18:25:02.89ID:dRw5fmM/ cshでちゃんと動くスクリプトをかける気がしない
232デフォルトの名無しさん
2021/11/15(月) 18:50:52.77ID:P0qC0lwO >>229
メンバーに、Cshからの離脱を提案するべき!w
メンバーに、Cshからの離脱を提案するべき!w
233デフォルトの名無しさん
2021/11/15(月) 19:06:48.98ID:Nvu8rn94234デフォルトの名無しさん
2021/11/15(月) 21:09:52.69ID:VIw7Bjxz cshスクリプトの中からbashを呼び出せば問題解決だよ!
235デフォルトの名無しさん
2021/11/16(火) 02:22:46.34ID:/Wn82zXu236デフォルトの名無しさん
2021/11/16(火) 12:03:49.53ID:a9xlbndo 40代だけど、Solarisでtcshがログインシェルだったなあ
作業手順書作って、承認受けてから変更作業するタイプのしごとしてて、
ワンライナースクリプトをcshrcに書いてた記憶がある。
帰ったらその頃の資料探してみる
独立したshell scriptを書くには向かないのは同意
作業手順書作って、承認受けてから変更作業するタイプのしごとしてて、
ワンライナースクリプトをcshrcに書いてた記憶がある。
帰ったらその頃の資料探してみる
独立したshell scriptを書くには向かないのは同意
237デフォルトの名無しさん
2021/11/16(火) 13:09:44.40ID:6naJ2IpF Bsh系も、testコマンドのオプション扱いじゃなく、
直感的な == < > <= >= != を使いたいと思うことがある
普段他の言語を書いてて、たまにshを使おうとするといつも一瞬考えてしまう
Bashだと = のかわりに == が使えるけど、後は駄目だもんな
= もスペースのあるなしで代入と区別するなんてこと忘れてて悩むことしばし
直感的な == < > <= >= != を使いたいと思うことがある
普段他の言語を書いてて、たまにshを使おうとするといつも一瞬考えてしまう
Bashだと = のかわりに == が使えるけど、後は駄目だもんな
= もスペースのあるなしで代入と区別するなんてこと忘れてて悩むことしばし
238デフォルトの名無しさん
2021/11/16(火) 19:38:58.36ID:ILiueDpc239デフォルトの名無しさん
2021/11/16(火) 19:46:23.56ID:M5sJu72u240デフォルトの名無しさん
2021/11/18(木) 00:52:48.55ID:8Z3t28Md >>236
使ってた本は
技術評論社のThe UNIX Surper Text 上
で、
第29章 csh プログラミング
だと思う。
ほかはmanとwebの情報でやってたはず。
csh系はたとえシングルクォートの中でも!はエスケープしないといけないのが注意点かな。
変数の中に入れるときにエスケープはいつでも必須で、
それを使うときにヒストリ置換するならそのままつかい、ヒストリ置換せずに使うなら再度エスケープがいる。
あとは慣れだと思う。
リダイレクト関連はcshだと実現できないことがあったはずで、
それはcshからperl呼んで実質perlスクリプトになってたはず。
使ってた本は
技術評論社のThe UNIX Surper Text 上
で、
第29章 csh プログラミング
だと思う。
ほかはmanとwebの情報でやってたはず。
csh系はたとえシングルクォートの中でも!はエスケープしないといけないのが注意点かな。
変数の中に入れるときにエスケープはいつでも必須で、
それを使うときにヒストリ置換するならそのままつかい、ヒストリ置換せずに使うなら再度エスケープがいる。
あとは慣れだと思う。
リダイレクト関連はcshだと実現できないことがあったはずで、
それはcshからperl呼んで実質perlスクリプトになってたはず。
241デフォルトの名無しさん
2021/11/18(木) 02:41:57.64ID:+R4B5ZiG242デフォルトの名無しさん
2021/11/18(木) 07:27:37.37ID:8Z3t28Md >>241
シングルクォートを入れたければ、ダブルクォートでくくる。
ダブルクォートを入れたければシングルクォートでくくる。
set hensu="single ' double "'"'" hogehoge"
古いbshもこの方式が必要だったはず。
シングルクォートを入れたければ、ダブルクォートでくくる。
ダブルクォートを入れたければシングルクォートでくくる。
set hensu="single ' double "'"'" hogehoge"
古いbshもこの方式が必要だったはず。
243デフォルトの名無しさん
2021/11/18(木) 08:22:45.64ID:+R4B5ZiG あれ?できるね?なにで引っかかったんだっけか?
改行文字だったかな?
入れること自体はできるけど、それを使おうとすると
Unmatchedが表示されない?
改行+クォートの場合だけ?
どうも仕様がよくわからん
改行文字だったかな?
入れること自体はできるけど、それを使おうとすると
Unmatchedが表示されない?
改行+クォートの場合だけ?
どうも仕様がよくわからん
244デフォルトの名無しさん
2021/11/18(木) 14:06:14.63ID:a7FUItee 昔に何故cshでshell scriptを書くべきでないかという英語文書があって日本語訳もあった
調べたい人は自分で調べてくれ
調べたい人は自分で調べてくれ
245デフォルトの名無しさん
2021/11/19(金) 00:14:07.06ID:tkL53aTR >>230
そう。正に俺の歳が分かれ目だ。
そう。正に俺の歳が分かれ目だ。
246デフォルトの名無しさん
2021/11/19(金) 00:38:23.55ID:ufFlBqDY247デフォルトの名無しさん
2021/11/19(金) 00:59:37.90ID:Z3I1Kt5f cshの問題点
> 4. クオート
> csh ではまともにクオートをすることができません。
これか
> 改行をクオートするためにはバックスラッシュを使う必要があり、文字列に含
> めるのは本当に難しいことです。
難しいのか不可能なのかはっきりしてほしいな
不可能なんじゃないのか?
> 4. クオート
> csh ではまともにクオートをすることができません。
これか
> 改行をクオートするためにはバックスラッシュを使う必要があり、文字列に含
> めるのは本当に難しいことです。
難しいのか不可能なのかはっきりしてほしいな
不可能なんじゃないのか?
248デフォルトの名無しさん
2021/11/19(金) 01:47:44.31ID:tkL53aTR えー。うそー。そんなの簡単じゃん。
% set s = "abc\
def"
% echo "$s"
Unmatched ".
ひでぶっ
% set s = "abc\
def"
% echo "$s"
Unmatched ".
ひでぶっ
249デフォルトの名無しさん
2021/11/19(金) 01:55:47.56ID:mVkI0tbJ >>248
どうなっとるんや?w
どうなっとるんや?w
250242
2021/11/19(金) 08:41:17.13ID:STy6DLgM LFが入った変数を再度シェルに評価させるときは、
もともとその変数の末尾に¥¥を書く。
気をつけるのはヒストリ置換だけじゃなかったね
忘れてたよ。
alias time-filter '(perl -e '"'"'\\
use POSIX qq(strftime); \\
$| = 1; \\
while (defined(my $line = <>)) { \\
print strftime("%Y/%m/%d %H:%M:%S ", localtime), $line; }'"')"
こんな感じ。
csh手元にないから動作確認してみて。
tail -f 時刻が出ない追記されていくファイル | time-filter
って感じで使ってた
もともとその変数の末尾に¥¥を書く。
気をつけるのはヒストリ置換だけじゃなかったね
忘れてたよ。
alias time-filter '(perl -e '"'"'\\
use POSIX qq(strftime); \\
$| = 1; \\
while (defined(my $line = <>)) { \\
print strftime("%Y/%m/%d %H:%M:%S ", localtime), $line; }'"')"
こんな感じ。
csh手元にないから動作確認してみて。
tail -f 時刻が出ない追記されていくファイル | time-filter
って感じで使ってた
251デフォルトの名無しさん
2021/11/19(金) 21:58:57.06ID:QjMBy/iN 例の大学で教授やってるやつ、どうどう利用規約違反してたことを
宣言しててこいつやばくね?わかってないのかね?
リッチー大佐の中の人
https://twitter.com/col_richie/status/1460830111939186689
> Twitter API v2は、収集可能なツイート数の制限が無料プランでも月200万ツイートに緩和される、
> とアナウンスされたのだが、我らのTwitterアプリ「小鳥男」なら、とっくの昔から、
> 理論上432万ツイートを1日で(1秒あたり50)収集する能力を持っているぞ。
https://twitter.com/5chan_nel (5ch newer account)
宣言しててこいつやばくね?わかってないのかね?
リッチー大佐の中の人
https://twitter.com/col_richie/status/1460830111939186689
> Twitter API v2は、収集可能なツイート数の制限が無料プランでも月200万ツイートに緩和される、
> とアナウンスされたのだが、我らのTwitterアプリ「小鳥男」なら、とっくの昔から、
> 理論上432万ツイートを1日で(1秒あたり50)収集する能力を持っているぞ。
https://twitter.com/5chan_nel (5ch newer account)
252デフォルトの名無しさん
2021/11/19(金) 23:56:45.76ID:mVkI0tbJ 「理論上」の「能力」の何が「規約違反」なんや?w
253デフォルトの名無しさん
2021/11/20(土) 00:56:30.88ID:JrFFOVaX 本人降臨
254デフォルトの名無しさん
2021/11/20(土) 07:12:22.11ID:H2B0KunX 本人に直接言えよ、誰も興味ないっての
255デフォルトの名無しさん
2021/11/20(土) 10:05:52.73ID:+pLKjIh3 例えて言うのなら、
1ヶ月30GBまで使えるように緩和されます
↓
とっくの昔から理論上一日で30GB使い切るアプリを持っているぞ!
何を自慢しているのかわからないなw
そんなのどんなアプリだって使い切る能力ぐらい持ってるでしょ
432万ツイートを収集できる能力のどこが「とっくの昔から能力を持ってるぞ」と
自慢するようなないようなのかわからん
1ヶ月30GBまで使えるように緩和されます
↓
とっくの昔から理論上一日で30GB使い切るアプリを持っているぞ!
何を自慢しているのかわからないなw
そんなのどんなアプリだって使い切る能力ぐらい持ってるでしょ
432万ツイートを収集できる能力のどこが「とっくの昔から能力を持ってるぞ」と
自慢するようなないようなのかわからん
256デフォルトの名無しさん
2021/11/20(土) 10:12:48.03ID:+pLKjIh3 むしろ1秒あたり50ツイートって遅くね?
1ツイートあたり 280文字?として多めに見積もって1ツイート1KB
つまり50KB/sでしょ?
Twitter側の帯域制限があるのだろうと思うけど
別に自慢できる量じゃないなぁ
そもそも通信速度とサーバーの負荷に依存する話なので
たかがクライアントアプリを自慢するようなもんじゃない
1ツイートあたり 280文字?として多めに見積もって1ツイート1KB
つまり50KB/sでしょ?
Twitter側の帯域制限があるのだろうと思うけど
別に自慢できる量じゃないなぁ
そもそも通信速度とサーバーの負荷に依存する話なので
たかがクライアントアプリを自慢するようなもんじゃない
257デフォルトの名無しさん
2021/11/20(土) 12:55:55.53ID:mzO+cRkE それってシェルスクリプトの話なの?
258デフォルトの名無しさん
2021/11/23(火) 15:01:42.04ID:HIAOM8SH 全ての事をシェルスクリプトで実現可能だと信じる者にとっては、この世の全てはシェルスクリプトの話になる。
259デフォルトの名無しさん
2021/11/24(水) 16:26:22.49ID:uH6oNI9g すみません、質問です。
hoge(関数) /usr/bin/python /usr/local/bin/piyo/piyopiyo.py
mv foge fogefoge
rm *hege*.csv
exit
hoge()[
python -B $1
以下、処理
]
という形は、
hoge(関数)というサブルーチン内で/usr/local/bin/piyo/piyopiyo.pyを実行する形になりますでしょうか。
お手数おかけして恐縮ですが、教えていただければ幸いです。
hoge(関数) /usr/bin/python /usr/local/bin/piyo/piyopiyo.py
mv foge fogefoge
rm *hege*.csv
exit
hoge()[
python -B $1
以下、処理
]
という形は、
hoge(関数)というサブルーチン内で/usr/local/bin/piyo/piyopiyo.pyを実行する形になりますでしょうか。
お手数おかけして恐縮ですが、教えていただければ幸いです。
260デフォルトの名無しさん
2021/11/24(水) 20:18:23.05ID:BxfR7tjM261デフォルトの名無しさん
2021/11/25(木) 01:32:33.90ID:nh0ZEMSE コマンド呼び出しは、 `〜`, $(〜)
〜の所に、/usr/bin/python /usr/local/bin/piyo/piyopiyo.py
を書けばよい
python で、スクリプトファイルを実行する
〜の所に、/usr/bin/python /usr/local/bin/piyo/piyopiyo.py
を書けばよい
python で、スクリプトファイルを実行する
262デフォルトの名無しさん
2021/12/06(月) 13:07:43.50ID:EdXlAvnn リッチー大佐ヤケドしすぎててワロタw
あの2人、終始レッテル貼りと揚げ足取りばっかりで終わってるな
あの2人、終始レッテル貼りと揚げ足取りばっかりで終わってるな
263デフォルトの名無しさん
2021/12/07(火) 00:28:49.96ID:8z/NS8OJ おわってんのはおめーだよ...
264デフォルトの名無しさん
2021/12/07(火) 08:02:22.59ID:J63EZfFq お?本人登場ですかな?www
265デフォルトの名無しさん
2021/12/07(火) 11:51:58.44ID:sVKUttQ/ ガチでヌーブなんですけどrequestsとbeautifulsoupでスクレイピングやってます
waitかけないとバンされるよと言われましたがどうすればいいですか?
requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います
これに対してどうすればいいですか?
waitかけないとバンされるよと言われましたがどうすればいいですか?
requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います
これに対してどうすればいいですか?
266デフォルトの名無しさん
2021/12/07(火) 12:54:21.46ID:lMfMxSoR シェルスクリプトの話題ではないので、他のスレへ書き込んでください!
267デフォルトの名無しさん
2021/12/08(水) 18:51:18.84ID:pKMBsr2n すみません、質問です。
cp -f dir1/file dir2 を実行し、もし失敗したとき、
echo File copy failure >> log
を実行させる処理はどのようにすればよいですか?
cp -f dir1/file dir2 を実行し、もし失敗したとき、
echo File copy failure >> log
を実行させる処理はどのようにすればよいですか?
268デフォルトの名無しさん
2021/12/08(水) 18:53:04.75ID:FensyVy4 if文調べてみ
269デフォルトの名無しさん
2021/12/08(水) 19:23:10.00ID:1IkqCtnf 宿題は自分でやらなきゃ
270デフォルトの名無しさん
2021/12/08(水) 21:26:49.78ID:FensyVy4 シェルスクリプト if文
でググると最初の方にあるのは、[ ] (test) ありきで、
評価するのは 条件式 と他の言語と同じような説明してるのなんだな
でググると最初の方にあるのは、[ ] (test) ありきで、
評価するのは 条件式 と他の言語と同じような説明してるのなんだな
271デフォルトの名無しさん
2021/12/09(木) 11:10:12.63 一定時間ごとにechoするスクリプトがあります
プロセスっていうのでしょうか、
そのechoされたものを動的に取得し
別のスクリプトに渡したいのですがどうやればいいのでしょうか
【sample1.sh】
echo aaa
sleep 3
echo bbb
【sample2.sh】
echo $1
$ bash sample1.sh & sleep 5 && bash sample2.sh
このコードになんらかを加えてsample2にbbbを渡せたらな、
というのを期待しています
プロセスっていうのでしょうか、
そのechoされたものを動的に取得し
別のスクリプトに渡したいのですがどうやればいいのでしょうか
【sample1.sh】
echo aaa
sleep 3
echo bbb
【sample2.sh】
echo $1
$ bash sample1.sh & sleep 5 && bash sample2.sh
このコードになんらかを加えてsample2にbbbを渡せたらな、
というのを期待しています
272デフォルトの名無しさん
2021/12/09(木) 11:16:25.28273デフォルトの名無しさん
2021/12/09(木) 11:17:25.98274デフォルトの名無しさん
2021/12/09(木) 11:52:59.62ID:4q0mFQ+L # コマンドの実行履歴を出力する
set -x
# コマンドの返り値が非ゼロのとき停止する
set -e
コマンド終了時には「終了ステータス (exit-status)」と呼ばれる、
コマンドの成否を表す数値が、特殊変数 $? に自動で設定される
各コマンドにより異なるが、一般的には、
コマンド成功時には「0」
失敗時には「1」(コマンドやエラーの種類によっては、0 以外)
何かのコマンド
echo $?
例えば、
#!/bin/sh
cat abc
case $? in
0) echo "ファイルが存在する" ;;
*) echo "ファイルが存在しない" ;;
esac
これを、if [ $? = 0 ]; then
と書くと、Shell Check の警告が出る
SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.
set -x
# コマンドの返り値が非ゼロのとき停止する
set -e
コマンド終了時には「終了ステータス (exit-status)」と呼ばれる、
コマンドの成否を表す数値が、特殊変数 $? に自動で設定される
各コマンドにより異なるが、一般的には、
コマンド成功時には「0」
失敗時には「1」(コマンドやエラーの種類によっては、0 以外)
何かのコマンド
echo $?
例えば、
#!/bin/sh
cat abc
case $? in
0) echo "ファイルが存在する" ;;
*) echo "ファイルが存在しない" ;;
esac
これを、if [ $? = 0 ]; then
と書くと、Shell Check の警告が出る
SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.
275デフォルトの名無しさん
2021/12/09(木) 11:59:18.64ID:4q0mFQ+L276デフォルトの名無しさん
2021/12/09(木) 12:30:42.74 >>275
おおそんな便利なコマンドがあったんですね
$bash sample1.sh | tee result.txt & sleep 5 && bash sample2.sh
でsample2内で取得できましたありがとうございます
ゴテゴテですが一応やりたかったことはできました
https://colab.research.google.com/drive/1nHbgd_KRiSF3uoaRKsM8shhMqFrI6PB0
おおそんな便利なコマンドがあったんですね
$bash sample1.sh | tee result.txt & sleep 5 && bash sample2.sh
でsample2内で取得できましたありがとうございます
ゴテゴテですが一応やりたかったことはできました
https://colab.research.google.com/drive/1nHbgd_KRiSF3uoaRKsM8shhMqFrI6PB0
277デフォルトの名無しさん
2021/12/09(木) 21:58:36.81ID:Mbxb9x/j for ((i=0; i < 10; i++)) {
...
}
風
i=-1; while : $((i+=1)); [ $i -lt 10 ]; do
...
done
...
}
風
i=-1; while : $((i+=1)); [ $i -lt 10 ]; do
...
done
278デフォルトの名無しさん
2021/12/09(木) 22:10:34.91ID:ghcaSzTo >>271 mkfifoで名前付きパイプを使ってもいいと思った
取りこぼしが無いよう、先にパイプを作る必要はあるが
mkfifo pipe
sample2.sh < pipe &
sample.sh > pipe &
fg %-
みたいな
取りこぼしが無いよう、先にパイプを作る必要はあるが
mkfifo pipe
sample2.sh < pipe &
sample.sh > pipe &
fg %-
みたいな
279デフォルトの名無しさん
2021/12/09(木) 22:21:13.87ID:2QHtVdpK sample2の引数にsample1を取って中で実行させるんじゃ駄目なの?
280デフォルトの名無しさん
2021/12/10(金) 00:49:10.12ID:0uGej2hE >>279
終わった話に、あやしいやりかたの提案。w
終わった話に、あやしいやりかたの提案。w
281デフォルトの名無しさん
2021/12/10(金) 01:52:13.39ID:Uh57IFJZ282デフォルトの名無しさん
2021/12/10(金) 01:56:31.72ID:Uh57IFJZ >>271
expect コマンドを使うと複雑な事も出来ると思う。
expect コマンドを使うと複雑な事も出来ると思う。
283デフォルトの名無しさん
2021/12/11(土) 14:27:15.50ID:uPYAT6Ja >>274
普通はファイルが存在するならコマンドを実行する、と書くし、非存在時のechoコマンドの
出力先が標準出力な点も気になる(標準エラー出力であるべき)。また、catコマンド実行時に
ファイルが見つからなければ、"そのようなファイルやディレクトリはありません"とコマンド
自体が(標準エラー出力に)メッセージを出すので、重複した記述でもある。
普通はファイルが存在するならコマンドを実行する、と書くし、非存在時のechoコマンドの
出力先が標準出力な点も気になる(標準エラー出力であるべき)。また、catコマンド実行時に
ファイルが見つからなければ、"そのようなファイルやディレクトリはありません"とコマンド
自体が(標準エラー出力に)メッセージを出すので、重複した記述でもある。
284デフォルトの名無しさん
2021/12/11(土) 18:07:38.11ID:vrksYrpn > 普通はファイルが存在するならコマンドを実行する、と書くし、
書かねーよ。
ファイルが存在すると判断した後の消されたどうすんだ
シェルスクリプト業界って素人が多いのか?
書かねーよ。
ファイルが存在すると判断した後の消されたどうすんだ
シェルスクリプト業界って素人が多いのか?
285デフォルトの名無しさん
2021/12/11(土) 18:07:53.48ID:vrksYrpn ファイルが存在すると判断した後に消されたどうすんだ
286デフォルトの名無しさん
2021/12/11(土) 18:10:19.61ID:0kWUcctt 業界人さんちーすっww
シェルスクリプト業界w
シェルスクリプト業界w
287デフォルトの名無しさん
2021/12/11(土) 18:15:19.56ID:vrksYrpn シェルスクリプト業界だろ?w
シェルスクリプトばーっかりやってる
シェルスクリプト最強って言ってるアホ会社ども
シェルスクリプトばーっかりやってる
シェルスクリプト最強って言ってるアホ会社ども
288デフォルトの名無しさん
2021/12/11(土) 19:15:43.81ID:jwVRIORX289デフォルトの名無しさん
2021/12/11(土) 19:21:54.38ID:Vruq/eED どうせエラー出て失敗するんだからやり直せばいいだけのことなのに
あらゆる可能性を想定して滅多に使われない機能まで組み込んで肥大化する方があるある
あらゆる可能性を想定して滅多に使われない機能まで組み込んで肥大化する方があるある
290デフォルトの名無しさん
2021/12/11(土) 19:36:54.86ID:EpvuxOsQ 問題点に対するソリューションのご提案。
・ファイルロックを取得してから操作します。
・ファイルロックを取得できなかった場合、
1.他のプロセスが既に取得している。
2.ファイルが存在しない。
・以上を確認します。
・ファイルロックを取得してから操作します。
・ファイルロックを取得できなかった場合、
1.他のプロセスが既に取得している。
2.ファイルが存在しない。
・以上を確認します。
291デフォルトの名無しさん
2021/12/11(土) 20:08:06.21ID:vrksYrpn292デフォルトの名無しさん
2021/12/11(土) 21:05:42.03ID:LF8J+dNV シ
293デフォルトの名無しさん
2021/12/11(土) 22:38:36.00ID:qYkp+8zL テキストの入力、加工、出力以外の処理を無理に書くべきじゃない
それ以上のことがやりたくなったら別の言語使った方が楽
それ以上のことがやりたくなったら別の言語使った方が楽
294デフォルトの名無しさん
2021/12/11(土) 22:39:56.90ID:vrksYrpn シェルスクリプトでcpやrmを実行するなとか言ってんの?
アホじゃね?
お前シェルスクリプトの使い方を間違ってるよ
むしろテキストの加工ならなんの言語でやってもいい
アホじゃね?
お前シェルスクリプトの使い方を間違ってるよ
むしろテキストの加工ならなんの言語でやってもいい
295デフォルトの名無しさん
2021/12/11(土) 23:30:45.47ID:dNHI9UuU どこの会社でもやたら批判的な発言をするものの具体的な答えは何も示さず
相手が何を言い返しても分かった風の立場で「それは違う」と上から目線で言い続けるだけのマシーンっているよね
一言目から答え出しておけば無駄な会話もなくなるのに
相手が何を言い返しても分かった風の立場で「それは違う」と上から目線で言い続けるだけのマシーンっているよね
一言目から答え出しておけば無駄な会話もなくなるのに
296デフォルトの名無しさん
2021/12/11(土) 23:47:58.53ID:6uvwt7oX 変な会社に勤めてるんだな
自分の特殊な環境なのに全体にするとか
ネットによく居るタイプだな
自分の特殊な環境なのに全体にするとか
ネットによく居るタイプだな
297デフォルトの名無しさん
2021/12/12(日) 00:23:59.48ID:Cge0T7le cpもmvも処理の途中でやるもんじゃないよ。出力とみなして最後にやりなよ
298デフォルトの名無しさん
2021/12/12(日) 01:33:58.51ID:oJaPYVJw 全体にする??
299デフォルトの名無しさん
2021/12/12(日) 10:52:42.84ID:y4gnCele >>295
それが今の話となんの関係があんの?
それが今の話となんの関係があんの?
300デフォルトの名無しさん
2021/12/12(日) 12:20:58.07ID:JyN9iiR1 ファイルをロックしてまで、やっているスクリプトは珍しい
普通は、ファイルが存在しなければ、そこでエラーになるだけ
普通は、ファイルが存在しなければ、そこでエラーになるだけ
301デフォルトの名無しさん
2021/12/12(日) 12:27:49.49ID:y4gnCele シェルスクリプトには真のファイルロックなんてない
ロックファイルを作ってごまかしてるだけ
だからその状態で電源OFFとかエラーで強制終了すると
中途半端にファイルが残ってトラブルになる
ロックファイルを作ってごまかしてるだけ
だからその状態で電源OFFとかエラーで強制終了すると
中途半端にファイルが残ってトラブルになる
302デフォルトの名無しさん
2021/12/12(日) 12:28:31.23ID:y4gnCele そもそもファイルをロックするなんて出た時点で
シェルスクリプトを使うのは間違ってる
データベースを使えばいい
シェルスクリプトを使うのは間違ってる
データベースを使えばいい
303デフォルトの名無しさん
2021/12/12(日) 14:20:54.91ID:WF4PQxLz 揶揄だろうにマジレスw
304デフォルトの名無しさん
2021/12/13(月) 19:52:30.36ID:LfK/mY33 flock というコマンドが・・・
305デフォルトの名無しさん
2021/12/13(月) 21:42:22.10ID:6NEloxYy306デフォルトの名無しさん
2021/12/14(火) 01:59:34.43ID:rn98eftb アドバイザリで何か不都合あるの
307デフォルトの名無しさん
2021/12/14(火) 02:24:03.30ID:qTP7/6ko308デフォルトの名無しさん
2021/12/14(火) 03:14:46.69ID:rn98eftb 面白いと思って書いたの?
309デフォルトの名無しさん
2021/12/14(火) 09:18:10.80ID:/wewuKga name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
: $(($name = 123))
echo $value
これってPOSIX準拠?
310デフォルトの名無しさん
2021/12/14(火) 15:12:29.97ID:sz49PmUD うん
311デフォルトの名無しさん
2021/12/14(火) 15:31:16.80ID:VTHB4KBI bc使わないで小数の比較演算ってできますか?
RHEL8.0環境で何もインストールしてはいけません縛りの環境を渡されてbc入ってなくて詰んでます。
RHEL8.0環境で何もインストールしてはいけません縛りの環境を渡されてbc入ってなくて詰んでます。
312デフォルトの名無しさん
2021/12/14(火) 15:53:00.42ID:0juEz1uN PerlかPythonははいってんじゃないの?
dnf(yum)用とかで。
dnf(yum)用とかで。
313デフォルトの名無しさん
2021/12/14(火) 15:56:51.63ID:/wewuKga >>310
根拠はありますか?
根拠はありますか?
314デフォルトの名無しさん
2021/12/14(火) 15:56:55.09ID:VTHB4KBI 確かに
pythonで計算することにします
ありがとうございました
pythonで計算することにします
ありがとうございました
315デフォルトの名無しさん
2021/12/14(火) 15:59:09.28ID:/wewuKga316デフォルトの名無しさん
2021/12/14(火) 16:40:48.55ID:sz49PmUD317デフォルトの名無しさん
2021/12/14(火) 17:05:42.29ID:0juEz1uN >>315
bcでそんなことを言えんの?w
bcでそんなことを言えんの?w
318デフォルトの名無しさん
2021/12/14(火) 17:15:47.75ID:vLIDlmgW プログラミング言語を使わずに計算することを考える時点で、既におかしい
319デフォルトの名無しさん
2021/12/14(火) 17:33:58.21ID:/wewuKga320デフォルトの名無しさん
2021/12/14(火) 17:44:30.18ID:sz49PmUD >>319
書いてる
書いてる
321デフォルトの名無しさん
2021/12/14(火) 17:54:50.69ID:sz49PmUD まさか「書いてる」という言質が欲しかったわけじゃないよな
言葉使いからは「いつもの」っぽいけど
書いてると言われても見つけられなさそうだな、パターン的には
言葉使いからは「いつもの」っぽいけど
書いてると言われても見つけられなさそうだな、パターン的には
322デフォルトの名無しさん
2021/12/14(火) 17:57:32.23ID:0juEz1uN323デフォルトの名無しさん
2021/12/14(火) 18:03:51.08ID:0juEz1uN いや、そう使うように書くのはなかなか面倒か。
できなくはないやろけど。w
できなくはないやろけど。w
324デフォルトの名無しさん
2021/12/14(火) 18:04:26.19ID:sz49PmUD Linuxは一貫としてbcはデフォでは入ってないんだな。なんでだろ
LinuxというかGNUがだろけど
LinuxというかGNUがだろけど
325デフォルトの名無しさん
2021/12/14(火) 18:15:04.93ID:sz49PmUD POSIXとの互換性、仮にGNU bcでPOSIXのがそのまま動くとしても互換動作モードやドキュメントを書くのが面倒 とかかなと思ったら、
-w, --warn
POSIX bc に対する拡張機能が入力された場合は警告を出します。
-s, --standard
POSIX bc の言語仕様に厳密に従って処理します。
きっちりあるやん。なんでだろ。ナゾい
-w, --warn
POSIX bc に対する拡張機能が入力された場合は警告を出します。
-s, --standard
POSIX bc の言語仕様に厳密に従って処理します。
きっちりあるやん。なんでだろ。ナゾい
326デフォルトの名無しさん
2021/12/14(火) 19:12:11.27ID:/wewuKga >>328
書いてませんでした
書いてませんでした
327デフォルトの名無しさん
2021/12/14(火) 19:13:20.14ID:/wewuKga >>320
書いてませんでした。
なんですぐバレる嘘をつくんだろうかね
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04
書いてませんでした。
なんですぐバレる嘘をつくんだろうかね
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04
328デフォルトの名無しさん
2021/12/14(火) 19:15:41.20ID:sz49PmUD 書いてるだろwww
すげえなあ
すげえなあ
329デフォルトの名無しさん
2021/12/14(火) 19:18:10.50ID:sz49PmUD なんか、予告的なアンカーだなw
書いてませんでした と言えるのがイミフ。凄すぎてわからん
書いてませんでした と言えるのがイミフ。凄すぎてわからん
330デフォルトの名無しさん
2021/12/14(火) 19:18:12.33ID:/wewuKga なるほど、本当にここに書いてあるという主張してるのか
2.6.4 Arithmetic Expansion
Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. The format for arithmetic expansion shall be as follows:
$((expression))
The expression shall be treated as if it were in double-quotes, except that a double-quote inside the expression is not treated specially. The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
Next, the shell shall treat this as an arithmetic expression and substitute the value of the expression. The arithmetic expression shall be processed according to the rules given in Arithmetic Precision and Operations, with the following exceptions:
Only signed long integer arithmetic is required.
Only the decimal-constant, octal-constant, and hexadecimal-constant constants specified in the ISO C standard, Section 6.4.4.1 are required to be recognized as constants.
The sizeof() operator and the prefix and postfix "++" and "--" operators are not required.
Selection, iteration, and jump statements are not supported.
2.6.4 Arithmetic Expansion
Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. The format for arithmetic expansion shall be as follows:
$((expression))
The expression shall be treated as if it were in double-quotes, except that a double-quote inside the expression is not treated specially. The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
Next, the shell shall treat this as an arithmetic expression and substitute the value of the expression. The arithmetic expression shall be processed according to the rules given in Arithmetic Precision and Operations, with the following exceptions:
Only signed long integer arithmetic is required.
Only the decimal-constant, octal-constant, and hexadecimal-constant constants specified in the ISO C standard, Section 6.4.4.1 are required to be recognized as constants.
The sizeof() operator and the prefix and postfix "++" and "--" operators are not required.
Selection, iteration, and jump statements are not supported.
331デフォルトの名無しさん
2021/12/14(火) 19:18:27.78ID:/wewuKga All changes to variables in an arithmetic expression shall be in effect after the arithmetic expansion, as in the parameter expansion "${x=value}".
If the shell variable x contains a value that forms a valid integer constant, optionally including a leading <plus-sign> or <hyphen-minus>, then the arithmetic expansions "$((x))" and "$(($x))" shall return the same value.
As an extension, the shell may recognize arithmetic expressions beyond those listed. The shell may use a signed integer type with a rank larger than the rank of signed long. The shell may use a real-floating type instead of signed long as long as it does not affect the results in cases where there is no overflow. If the expression is invalid, or the contents of a shell variable used in the expression are not recognized by the shell, the expansion fails and the shell shall write a diagnostic message to standard error indicating the failure.
どこにあるのか、言ってみ
If the shell variable x contains a value that forms a valid integer constant, optionally including a leading <plus-sign> or <hyphen-minus>, then the arithmetic expansions "$((x))" and "$(($x))" shall return the same value.
As an extension, the shell may recognize arithmetic expressions beyond those listed. The shell may use a signed integer type with a rank larger than the rank of signed long. The shell may use a real-floating type instead of signed long as long as it does not affect the results in cases where there is no overflow. If the expression is invalid, or the contents of a shell variable used in the expression are not recognized by the shell, the expansion fails and the shell shall write a diagnostic message to standard error indicating the failure.
どこにあるのか、言ってみ
332デフォルトの名無しさん
2021/12/14(火) 19:19:31.70ID:0juEz1uN >>327
そうやって、わざわざ相手にしてちゃんと調べてやる人がおるからやろ。w
そうやって、わざわざ相手にしてちゃんと調べてやる人がおるからやろ。w
333デフォルトの名無しさん
2021/12/14(火) 19:20:48.60ID:0juEz1uN あ、違うんか。
またいちびっとるとは思わんかった。
またいちびっとるとは思わんかった。
334デフォルトの名無しさん
2021/12/14(火) 19:21:00.40ID:/wewuKga 英語めないんでしょ?
2.6.4 算術式の展開
算術展開は、算術式を評価してその値を代入するためのメカニズムである。算術展開のフォーマットは以下のとおりです。
$((式))
式は二重引用符で囲まれているかのように扱われますが、式の中の二重引用符は特別に扱われません。シェルは、パラメータの展開、コマンドの置換、
引用符の除去のために、式のすべてのトークンを展開する。
次に、シェルはこれを算術式として扱い、式の値を代入する。算術式は、以下の例外を除き、
「算術の精度と演算」で示された規則に従って処理されなければならない。
符号付き長整数の算術演算のみが必要である。
ISO C規格の6.4.4.1項で規定されている
10進数定数、8進数定数、16進数定数のみを定数として認識する必要があります。
sizeof()演算子、前置および後置の "++"および"--"演算子は必須ではありません。
選択、反復、およびジャンプ文はサポートされていません。
算術式の中の変数に対するすべての変更は、"${x=value}"というパラメータ展開のように、
算術式の展開の後に効力を持つものとします。
シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
<ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
拡張機能として、シェルはここに挙げた以外の算術式を
認識することができます。シェルは、signed long のランクよりも大きいランクの符号付き整数型を使用することができます。
シェルは、オーバーフローが発生しない場合の結果に影響しない限り、signed long の代わりに real-floating 型を使用してもよい。式が無効な場合、または
式で使用されているシェル変数の内容がシェルによって認識されない場合、展開は失敗し、シェルは失敗を示す診断メッセージを標準エラーに書き込まなければならない。
2.6.4 算術式の展開
算術展開は、算術式を評価してその値を代入するためのメカニズムである。算術展開のフォーマットは以下のとおりです。
$((式))
式は二重引用符で囲まれているかのように扱われますが、式の中の二重引用符は特別に扱われません。シェルは、パラメータの展開、コマンドの置換、
引用符の除去のために、式のすべてのトークンを展開する。
次に、シェルはこれを算術式として扱い、式の値を代入する。算術式は、以下の例外を除き、
「算術の精度と演算」で示された規則に従って処理されなければならない。
符号付き長整数の算術演算のみが必要である。
ISO C規格の6.4.4.1項で規定されている
10進数定数、8進数定数、16進数定数のみを定数として認識する必要があります。
sizeof()演算子、前置および後置の "++"および"--"演算子は必須ではありません。
選択、反復、およびジャンプ文はサポートされていません。
算術式の中の変数に対するすべての変更は、"${x=value}"というパラメータ展開のように、
算術式の展開の後に効力を持つものとします。
シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
<ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
拡張機能として、シェルはここに挙げた以外の算術式を
認識することができます。シェルは、signed long のランクよりも大きいランクの符号付き整数型を使用することができます。
シェルは、オーバーフローが発生しない場合の結果に影響しない限り、signed long の代わりに real-floating 型を使用してもよい。式が無効な場合、または
式で使用されているシェル変数の内容がシェルによって認識されない場合、展開は失敗し、シェルは失敗を示す診断メッセージを標準エラーに書き込まなければならない。
335デフォルトの名無しさん
2021/12/14(火) 19:21:38.22ID:/wewuKga いちいち嘘を付く理由がわからんね
336デフォルトの名無しさん
2021/12/14(火) 19:22:29.34ID:sz49PmUD337デフォルトの名無しさん
2021/12/14(火) 19:23:44.74ID:/wewuKga 書いてないものをよく読めっていってごまかしてるのは
自分の間違いを認められないからなのかな?
自分の間違いを認められないからなのかな?
338デフォルトの名無しさん
2021/12/14(火) 19:24:02.73ID:sz49PmUD339デフォルトの名無しさん
2021/12/14(火) 19:25:13.06ID:/wewuKga だからどこにも書いてないと言ってる
なんで反論してるの?
なんで反論してるの?
340デフォルトの名無しさん
2021/12/14(火) 19:26:13.37ID:/wewuKga > シェルの変数xが、有効な整数定数を構成する値を含み、オプションとして先頭に<プラス記号>または
> <ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
ここよく読めばわかるが、書いてないと言ってる。
他に言い返す言葉はある?
> <ハイフン-マイナス>を含む場合、算術展開の"$((x)) "と"$(($x)) "は同じ値を返すものとします。
ここよく読めばわかるが、書いてないと言ってる。
他に言い返す言葉はある?
341デフォルトの名無しさん
2021/12/14(火) 19:27:50.35ID:/wewuKga やっぱりだまっちゃったかw
342デフォルトの名無しさん
2021/12/14(火) 19:29:37.68ID:sz49PmUD343デフォルトの名無しさん
2021/12/14(火) 19:31:39.59ID:/wewuKga >>342
なんで内容を端折るんだ?
たった3行だろ
全部読めよ
理解してないまま回答してるんだから
そりゃ嘘つき呼ばわりされてもしょうがない
name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
なんで内容を端折るんだ?
たった3行だろ
全部読めよ
理解してないまま回答してるんだから
そりゃ嘘つき呼ばわりされてもしょうがない
name=value
: $(($name = 123))
echo $value
これってPOSIX準拠?
344デフォルトの名無しさん
2021/12/14(火) 19:32:41.80ID:/wewuKga 英語読めない。規格書を読めないって
バカにされていた○○主義者ってのがいたなぁ
バカにされていた○○主義者ってのがいたなぁ
345デフォルトの名無しさん
2021/12/14(火) 19:34:10.98ID:sz49PmUD346デフォルトの名無しさん
2021/12/14(火) 19:34:30.12ID:/wewuKga 書いてないことを自分の都合のいいように解釈して突っ走るところもそっくりだ
347デフォルトの名無しさん
2021/12/14(火) 19:34:50.92ID:sz49PmUD348デフォルトの名無しさん
2021/12/14(火) 19:34:51.68ID:/wewuKga349デフォルトの名無しさん
2021/12/14(火) 19:35:59.31ID:/wewuKga name=value
: $(($name = 123))
echo $value
これよんで、
> 問題にしてるのは
> $(($name = 123))
> これ
> name = 123
> これ
> =
> これ
> ってことでいいんだな?
なんて質問するのも頭が悪い
: $(($name = 123))
echo $value
これよんで、
> 問題にしてるのは
> $(($name = 123))
> これ
> name = 123
> これ
> =
> これ
> ってことでいいんだな?
なんて質問するのも頭が悪い
350デフォルトの名無しさん
2021/12/14(火) 19:36:18.40ID:sz49PmUD >>346,348
いつもの 誤魔化 しかよ
つくづくだな
お前はどこがPOSIX準拠じゃないと思ってるねん?
name=value
: $(($name = 123))
echo $value
全部か?w
いつもの 誤魔化 しかよ
つくづくだな
お前はどこがPOSIX準拠じゃないと思ってるねん?
name=value
: $(($name = 123))
echo $value
全部か?w
351デフォルトの名無しさん
2021/12/14(火) 19:37:27.42ID:/wewuKga352デフォルトの名無しさん
2021/12/14(火) 19:38:15.35ID:/wewuKga ホントなんでこんなバカなんだろうな
353デフォルトの名無しさん
2021/12/14(火) 19:38:33.15ID:/wewuKga 英語というか、規格書の読み方をっ勉強したほうがいいぞ
354デフォルトの名無しさん
2021/12/14(火) 19:42:47.04ID:sz49PmUD >>351,352,353
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
なに言ってるの? name = 123 この部分だろ?
name変数の中身が整数定数 なんて関係ないぞ
コンピューターサイエンスw的に、型が無い言語なら当たり前的にもな
お前は仕様書、規格書読むのに必要な知識が足りなさすぎだがな、
よく言うよほんと自己紹介好きw
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
なに言ってるの? name = 123 この部分だろ?
name変数の中身が整数定数 なんて関係ないぞ
コンピューターサイエンスw的に、型が無い言語なら当たり前的にもな
お前は仕様書、規格書読むのに必要な知識が足りなさすぎだがな、
よく言うよほんと自己紹介好きw
355デフォルトの名無しさん
2021/12/14(火) 19:44:03.99ID:/wewuKga > なに言ってるの? name = 123 この部分だろ?
name = 123 と書いたのはおまえ
↓どこにも書いてない。目が悪い?それとも頭?
name=value
: $(($name = 123))
echo $value
name = 123 と書いたのはおまえ
↓どこにも書いてない。目が悪い?それとも頭?
name=value
: $(($name = 123))
echo $value
356デフォルトの名無しさん
2021/12/14(火) 19:44:44.42ID:/wewuKga > If the shell variable x contains a value that forms a valid integer constant,
読めないんだろうなぁ
はい、翻訳
シェルの変数xが、有効な整数定数を構成する値を含み、
読めないんだろうなぁ
はい、翻訳
シェルの変数xが、有効な整数定数を構成する値を含み、
357デフォルトの名無しさん
2021/12/14(火) 19:45:07.43ID:6VIYonG0 $nameをvalueに変えるparameter expansionは最初に行われるでしょ
> The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
その後は普通にvalue = 123が実行されるだけ
> The shell shall expand all tokens in the expression for parameter expansion, command substitution, and quote removal.
その後は普通にvalue = 123が実行されるだけ
358デフォルトの名無しさん
2021/12/14(火) 19:45:36.95ID:/wewuKga 「その後は普通にvalue = 123が実行されるだけ」と書いていない
359デフォルトの名無しさん
2021/12/14(火) 19:45:41.12ID:sz49PmUD >>355
じゃあ、お前の言う
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
ってどこの部分やねん
お前は他人の文の意味を読めなさすぎ、のくせによく言うよを繰り返しすぎだな
じゃあ、お前の言う
>POSIXにはname変数の中身が整数定数でないときに
>どうなるかの挙動が書いてない
ってどこの部分やねん
お前は他人の文の意味を読めなさすぎ、のくせによく言うよを繰り返しすぎだな
360デフォルトの名無しさん
2021/12/14(火) 19:51:21.66ID:sz49PmUD361デフォルトの名無しさん
2021/12/14(火) 19:57:45.01ID:/wewuKga362デフォルトの名無しさん
2021/12/14(火) 20:15:07.62ID:/wewuKga POSIX準拠じゃないのはこれか
name="1+2"
echo $(( name ))
name="1+2"
echo $(( name ))
363デフォルトの名無しさん
2021/12/14(火) 20:16:20.29ID:/wewuKga 今までの流れからすればこう書いたほうがいいね
name="var=1+2"
echo $(( name ))
name変数の中身が整数定数でないときに
どうなるかの挙動は書いてない
name="var=1+2"
echo $(( name ))
name変数の中身が整数定数でないときに
どうなるかの挙動は書いてない
364デフォルトの名無しさん
2021/12/14(火) 20:32:34.85ID:2RbqpbYV シェルスクリプトで小数演算
dc ではいけないのか?
dc ではいけないのか?
365デフォルトの名無しさん
2021/12/18(土) 21:47:26.51ID:ThKMmio5 文字の長さに応じていい感じにタブの個数調整してくれる素敵なワンライナーとかない?
366デフォルトの名無しさん
2021/12/19(日) 00:43:08.09ID:1P9anxgU ワンライナーじゃなくてコマンドだろ
だいたいタブ個数調整と言われて
仕様がわからないとなんとも言えん
だいたいタブ個数調整と言われて
仕様がわからないとなんとも言えん
367デフォルトの名無しさん
2021/12/19(日) 04:58:32.60ID:Q8lTA8Fy unexpand
368デフォルトの名無しさん
2021/12/25(土) 20:40:43.43ID:62MjaTIU369デフォルトの名無しさん
2021/12/25(土) 21:25:20.38ID:gsyC6xqY >>368
2バイト文字では試してないけど
タブは8の倍数で位置を揃えるために必要な数が切り替わるので文字列リストの中で最大文字数のものに付与するタブを1として文字数が少なくなるほどタブを増やして行けばいいと分かった
最大文字数が42の場合
0〜7 タブ6つ
8〜15 タブ5つ
16〜23 タブ4つ
24〜31 タブ3つ
32〜39 タブ2つ
40〜47 タブ1つ
……
BINDのzoneファイルにAレコード大量追加したかっただけだから
ifで分岐させてなんとかしたけどもっと上手いことできるなら頼む
2バイト文字では試してないけど
タブは8の倍数で位置を揃えるために必要な数が切り替わるので文字列リストの中で最大文字数のものに付与するタブを1として文字数が少なくなるほどタブを増やして行けばいいと分かった
最大文字数が42の場合
0〜7 タブ6つ
8〜15 タブ5つ
16〜23 タブ4つ
24〜31 タブ3つ
32〜39 タブ2つ
40〜47 タブ1つ
……
BINDのzoneファイルにAレコード大量追加したかっただけだから
ifで分岐させてなんとかしたけどもっと上手いことできるなら頼む
370デフォルトの名無しさん
2021/12/25(土) 21:48:29.81ID:sYCPCNUA >>369
これを渡したら
<test.lst>
abc.c0м
defghijk.c0.jρ
123456.nёt
zzz.i0
これを出力して欲しい
<test_.lst>
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
↑
スマホからだからあれだがIN A以降は揃ってるつもり
これを渡したら
<test.lst>
abc.c0м
defghijk.c0.jρ
123456.nёt
zzz.i0
これを出力して欲しい
<test_.lst>
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
↑
スマホからだからあれだがIN A以降は揃ってるつもり
371デフォルトの名無しさん
2021/12/25(土) 22:27:57.12ID:qPDC9gWr printfのが簡単なんじゃないの?
372デフォルトの名無しさん
2021/12/25(土) 22:32:53.73ID:o6Yb7nqK ifとprintfでやった
373デフォルトの名無しさん
2021/12/26(日) 01:41:37.96ID:7bx5KWMB >>370
スペース区切りの複数単語が1行に入っていて1番目と2番目の間の空白を調整して2番目が全行で同じ位置から始まるようにするってことね。
スペース区切りの複数単語が1行に入っていて1番目と2番目の間の空白を調整して2番目が全行で同じ位置から始まるようにするってことね。
374デフォルトの名無しさん
2021/12/26(日) 01:44:16.01ID:7bx5KWMB あ、ちょっと違うか。2番目以降は固定で決まっているから1番目の単語だけ読ませてその後ろのタブを何個付加するかの問題か。
375デフォルトの名無しさん
2021/12/26(日) 02:10:55.11ID:7bx5KWMB >>370
できた。perl だ。
$ perl -ne 'chomp;push(@s,$_);if($l<length){$l=length} END{$m=int($l/8)+1;for(@s){print$_.("\t" x ($m-int(length($_)/8)))."IN A localhostのIP\n"}}' test.lst
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
$
できた。perl だ。
$ perl -ne 'chomp;push(@s,$_);if($l<length){$l=length} END{$m=int($l/8)+1;for(@s){print$_.("\t" x ($m-int(length($_)/8)))."IN A localhostのIP\n"}}' test.lst
abc.c0м IN A localhostのIP
defghijk.c0.jρ IN A localhostのIP
123456.nёt IN A localhostのIP
zzz.i0 IN A localhostのIP
$
376デフォルトの名無しさん
2021/12/26(日) 02:14:02.08ID:7bx5KWMB ただし、UTF-8で複数バイト文字混ざりだと画面上の幅とバイト数が一致しなくて失敗する行が出てくるだろうな。
377デフォルトの名無しさん
2021/12/26(日) 02:30:31.24ID:Opbh/M6O スレタイ読めよ
378デフォルトの名無しさん
2021/12/26(日) 06:24:53.12ID:7bx5KWMB >>377
シェルだけでワンライナーにしろってか?可能な感じはするが、長くなりそうだな。ちょっと君試しに作ってみなよ。
シェルだけでワンライナーにしろってか?可能な感じはするが、長くなりそうだな。ちょっと君試しに作ってみなよ。
379デフォルトの名無しさん
2021/12/26(日) 06:55:50.56ID:Guj/6jti いいかげんワンライナーなんてものからは卒業すべき
あれは実用的ではない
あれは実用的ではない
380デフォルトの名無しさん
2021/12/26(日) 07:00:58.21ID:Guj/6jti だいたい位置揃えならcolumnコマンドを使えばすむ
cat /etc/hosts | column -t
cat /etc/hosts | column -t
381デフォルトの名無しさん
2021/12/26(日) 08:08:53.29ID:7ywlyW9o columnコマンドなんてあったのな
これしゅごい
これしゅごい
382デフォルトの名無しさん
2021/12/26(日) 09:30:37.45ID:JgxQVN1x >>378
スレタイ読めよ
スレタイ読めよ
383デフォルトの名無しさん
2021/12/26(日) 12:47:31.30ID:N3NYq5+A プログラム技術。
384デフォルトの名無しさん
2021/12/26(日) 12:59:08.59ID:VAEhq19p すれたい
385デフォルトの名無しさん
2021/12/26(日) 13:59:45.22ID:0AMzbiZh 第一フィールドは20文字の決め打ちで
awk '{printf "%-20s %s", $1, "IN A 127.0.0.1\n"}' test.lst
awk '{printf "%-20s %s", $1, "IN A 127.0.0.1\n"}' test.lst
386デフォルトの名無しさん
2021/12/26(日) 17:10:00.49ID:NwCcamJz シェルではないね
387デフォルトの名無しさん
2021/12/26(日) 17:57:01.68ID:FJp/KqIP388デフォルトの名無しさん
2021/12/26(日) 20:01:39.02ID:nf0VENp6 columnはPOSIXじゃない!
よってawkで実装しなければいけない!
よってawkで実装しなければいけない!
389デフォルトの名無しさん
2021/12/26(日) 20:07:09.32ID:stZFhmVl >>388
っスレタイ
っスレタイ
390デフォルトの名無しさん
2021/12/26(日) 21:01:43.80ID:NGc68XAG フィルタープログラムはシェルスクリプトには必須だよ
391デフォルトの名無しさん
2021/12/26(日) 23:55:43.97ID:7bx5KWMB >>380>>385
TABになってないじゃん。
TABになってないじゃん。
392デフォルトの名無しさん
2021/12/26(日) 23:56:34.73ID:7bx5KWMB >>387
既存のコマンドで丁度良くTAB入れるやつは何てコマンド?
既存のコマンドで丁度良くTAB入れるやつは何てコマンド?
393デフォルトの名無しさん
2021/12/27(月) 01:45:10.81ID:t9d2fK6k394デフォルトの名無しさん
2021/12/27(月) 01:51:55.20ID:4XXPAYbv395デフォルトの名無しさん
2021/12/27(月) 02:06:52.16ID:4gZrwhe1396デフォルトの名無しさん
2021/12/27(月) 02:53:50.89ID:t9d2fK6k397デフォルトの名無しさん
2021/12/27(月) 05:01:52.38ID:4XXPAYbv > column コマンドでは TAB は出力されないよね。
スペースをタブに変換すりゃいいだろ
スペースをタブに変換すりゃいいだろ
398デフォルトの名無しさん
2021/12/27(月) 05:02:55.30ID:4XXPAYbv シェルスクリプトというのは既存のコマンドを使って
いかに楽をするかっていうのが重要
POSIXにこだわるのはアホ
いかに楽をするかっていうのが重要
POSIXにこだわるのはアホ
400デフォルトの名無しさん
2021/12/27(月) 11:39:49.78ID:4gZrwhe1401デフォルトの名無しさん
2021/12/27(月) 12:51:40.94ID:t9d2fK6k ハイハイ、ご要望通りにいたしましたw
F="%-`wc -L test.lst|cut -f1 -d' '`s";awk '{printf"'$F'\t%s",$1,"IN A 127.0.0.1\n"}' test.lst|unexpand -a
F="%-`wc -L test.lst|cut -f1 -d' '`s";awk '{printf"'$F'\t%s",$1,"IN A 127.0.0.1\n"}' test.lst|unexpand -a
402デフォルトの名無しさん
2021/12/27(月) 22:40:58.39ID:6GChlJ/6 >>401
ありがとう
ありがとう
403デフォルトの名無しさん
2021/12/28(火) 01:16:53.28ID:JDHjDqJz 汚らしいパールのワンライナーに比べたら多少洗練されたようだな
404デフォルトの名無しさん
2021/12/28(火) 12:30:02.74ID:IE5w4ImF405デフォルトの名無しさん
2021/12/28(火) 14:14:41.00ID:l3lJRmOp columnは知ってたけど-Lオプションは知らなかった
406デフォルトの名無しさん
2021/12/28(火) 14:39:23.17ID:GaScW5/W columnに-Lオプションなんてあるの?
407デフォルトの名無しさん
2021/12/28(火) 19:18:04.81ID:53pt8mb/ UNIX哲学
408デフォルトの名無しさん
2021/12/28(火) 23:09:44.65ID:5lZUdhkB POSIX原理主義者「POSIXにはないコマンドをawkで再実装した」
UNIX哲学「車輪の再発明をするな」
POSIX原理主義者「・・・」
UNIX哲学「車輪の再発明をするな」
POSIX原理主義者「・・・」
409デフォルトの名無しさん
2021/12/28(火) 23:13:32.40ID:l3lJRmOp410デフォルトの名無しさん
2021/12/29(水) 00:32:57.69ID:fFVPrxR2 debianのcolumnに比べてredhat系のcolumnのオプションが随分と充実してる
411デフォルトの名無しさん
2021/12/29(水) 01:12:38.97ID:Uqmbe8qT 2カラム目以降に何が来ようとも決してTAB変換されなくするには2カラム目以降を完全に後付けにすれば良い
それとawkの-vで事前に最大文字数入れておいて後でprintfのフォーマットに*使った方が見た目奇麗になるね
awk -v m=`wc -L < test.lst` '{printf "%-*s\t\n", m, $1}' test.lst | unexpand -a | xargs -i echo "{}IN A 127.0.0.1"
それとawkの-vで事前に最大文字数入れておいて後でprintfのフォーマットに*使った方が見た目奇麗になるね
awk -v m=`wc -L < test.lst` '{printf "%-*s\t\n", m, $1}' test.lst | unexpand -a | xargs -i echo "{}IN A 127.0.0.1"
412デフォルトの名無しさん
2021/12/29(水) 02:59:14.48ID:I8/QQkF4 スーパーコンピュータシステムのファイル消失のお詫び
https://www.iimc.kyoto-u.ac.jp/ja/whatsnew/information/detail/211228056999.html
2021年12月14日 17時32分 から 2021年12月16日 12時43分にかけて,
スーパーコンピュータシステムのストレージをバックアップするプログラム(日本ヒューレット・パッカード合同会社製)の
不具合により,スーパーコンピュータシステムの大容量ストレージ(/LARGE0) の一部データを意図せず削除する事故が発生しました.
Lustre ファイルシステムのファイル消失について
https://www.iimc.kyoto-u.ac.jp/services/comp/pdf/file_loss_insident_20211228.pdf
1 ファイル消失の影響範囲
対象ファイルシステム: /LARGE0
ファイル削除期間: 2021 年 12 月 14 日 17 時 32 分〜2021 年 12 月 16 日 12 時 43 分
消失対象ファイル: 2021 年 12 月 3 日 17 時 32 分以降、更新がなかったファイル
消失ファイル容量: 約 77TB
消失ファイル数: 34,011,293 ファイル
影響を受けたグループ: 14 グループ(4 グループが復元不能)
3 ファイル消失が発生した原因
バックアップスクリプトには、find コマンドにより 10 日以上古いログファイルを削除する処
理が含まれています。スクリプトの機能改善と合わせて、find コマンドの削除処理に渡す変数名
を視認性・可読性を高めるため変更いたしましたが、この修正したスクリプトのリリース手順に
考慮不足がありました。
bash は、シェルスクリプトの実行中に適時シェルスクリプトを読み込みます。この挙動によ
る副作用を認識できておらず、実行中のスクリプトが存在している状態でスクリプトの上書きに
よりリリースしてしまったことで、途中から修正したシェルスクリプトの再読み込みが発生し、
結果的に未定義の変数を含む find コマンドが実行されてしまいました。この結果、本来のログ
ディレクトリに保存されたファイルの削除をする処理ではなく、/LARGE0 のファイルを削除し
てしまいました。
https://www.iimc.kyoto-u.ac.jp/ja/whatsnew/information/detail/211228056999.html
2021年12月14日 17時32分 から 2021年12月16日 12時43分にかけて,
スーパーコンピュータシステムのストレージをバックアップするプログラム(日本ヒューレット・パッカード合同会社製)の
不具合により,スーパーコンピュータシステムの大容量ストレージ(/LARGE0) の一部データを意図せず削除する事故が発生しました.
Lustre ファイルシステムのファイル消失について
https://www.iimc.kyoto-u.ac.jp/services/comp/pdf/file_loss_insident_20211228.pdf
1 ファイル消失の影響範囲
対象ファイルシステム: /LARGE0
ファイル削除期間: 2021 年 12 月 14 日 17 時 32 分〜2021 年 12 月 16 日 12 時 43 分
消失対象ファイル: 2021 年 12 月 3 日 17 時 32 分以降、更新がなかったファイル
消失ファイル容量: 約 77TB
消失ファイル数: 34,011,293 ファイル
影響を受けたグループ: 14 グループ(4 グループが復元不能)
3 ファイル消失が発生した原因
バックアップスクリプトには、find コマンドにより 10 日以上古いログファイルを削除する処
理が含まれています。スクリプトの機能改善と合わせて、find コマンドの削除処理に渡す変数名
を視認性・可読性を高めるため変更いたしましたが、この修正したスクリプトのリリース手順に
考慮不足がありました。
bash は、シェルスクリプトの実行中に適時シェルスクリプトを読み込みます。この挙動によ
る副作用を認識できておらず、実行中のスクリプトが存在している状態でスクリプトの上書きに
よりリリースしてしまったことで、途中から修正したシェルスクリプトの再読み込みが発生し、
結果的に未定義の変数を含む find コマンドが実行されてしまいました。この結果、本来のログ
ディレクトリに保存されたファイルの削除をする処理ではなく、/LARGE0 のファイルを削除し
てしまいました。
413デフォルトの名無しさん
2021/12/29(水) 03:16:45.01ID:gf7++b5l あぁ、やはり Lustre はダメだなぁ…
414デフォルトの名無しさん
2021/12/29(水) 03:21:51.59ID:9nMYZ2sv 機器の不具合かのように書いてるけど馬鹿による人災じゃねーか
415デフォルトの名無しさん
2021/12/29(水) 04:05:13.87ID:DIjHY86S シェルスクリプト以外ではほとんど見られない性質ではあるからなあ。
たしかに人災とも言えるけど。
たしかに人災とも言えるけど。
416デフォルトの名無しさん
2021/12/29(水) 04:51:32.06ID:Uqmbe8qT シンボリックリンクで新しいバージョンのプログラムにリンク先切り替える方式にしておけば被害は防げたかも知れないな
417デフォルトの名無しさん
2021/12/29(水) 09:47:12.44ID:aqWkCMvZ xargsは強力だよねー
全然使いこなせねーわ
全然使いこなせねーわ
418デフォルトの名無しさん
2021/12/29(水) 10:35:20.64ID:HbjA8KL2 Linux の場合プログラムは起動時に全てメモリに読み込まれるから
稼働中にプログラムを差し替えても OK って考えて実際に差し替えたら
メモリ上の古いプログラムがファイルシステム上の新しいモジュール
ファイル読もうとして動作不良になったことがあったなあ
稼働中にプログラムを差し替えても OK って考えて実際に差し替えたら
メモリ上の古いプログラムがファイルシステム上の新しいモジュール
ファイル読もうとして動作不良になったことがあったなあ
419デフォルトの名無しさん
2021/12/29(水) 10:53:37.16ID:yFPIHMKS この挙動ってinodeが同じまま書き換えたから起こったんだよね?
inode変わるファイル更新なら起こらないよね?
inode変わるファイル更新なら起こらないよね?
420デフォルトの名無しさん
2021/12/29(水) 11:28:25.09ID:DIjHY86S421デフォルトの名無しさん
2021/12/29(水) 11:33:56.17ID:EOkSZQC4 リリース手順の考慮不足以前にfindを使った削除の運用自体に問題がある
ちゃんと金払ってまともなもの作ってもらわないと
未定義の変数を含むfindコマンドが実行すると
rootディレクトリのファイルが全削除される?
ちゃんと金払ってまともなもの作ってもらわないと
未定義の変数を含むfindコマンドが実行すると
rootディレクトリのファイルが全削除される?
422デフォルトの名無しさん
2021/12/29(水) 13:13:58.03ID:KOMId+4/ findとか関係ねーよ
例えばrmで終わるコマンドがあったとして
xxxxrm / が rm / と解釈されることだってある
例えばrmで終わるコマンドがあったとして
xxxxrm / が rm / と解釈されることだってある
423デフォルトの名無しさん
2021/12/29(水) 13:53:35.50ID:kCXooe0G /LARGE0${undefined}ってこと?
424デフォルトの名無しさん
2021/12/29(水) 15:06:25.94ID:W7/CHwWQ425デフォルトの名無しさん
2021/12/29(水) 15:11:30.51ID:1N8ukzHQ https://zenn.dev/mattn/articles/5af86b61004bdc
やっぱりinodeが変わってればokだったみたい。
mvとか、installとか使って反映しておけば回避できてた模様
やっぱりinodeが変わってればokだったみたい。
mvとか、installとか使って反映しておけば回避できてた模様
426デフォルトの名無しさん
2021/12/29(水) 15:31:39.64ID:V1sEjw5U 門外漢なんで純粋に知りたいんだけどこのbashの実行中の書き換えも書き換えたとこから逐次実行する仕様って歴史的経緯によるもの?もしくは
有効に活用できるケースがたくさんあるから意図して実装している?
有効に活用できるケースがたくさんあるから意図して実装している?
427デフォルトの名無しさん
2021/12/29(水) 16:23:06.17ID:bBNK3YsU Lustre の checkpoint 機能は使ってなかったのかな?
428デフォルトの名無しさん
2021/12/29(水) 17:29:01.73ID:wwN1RbRp Linuxはホットパッチが売りなので。
429デフォルトの名無しさん
2021/12/29(水) 17:40:55.16ID:I8/QQkF4430デフォルトの名無しさん
2021/12/29(水) 17:43:56.77ID:Y+wm1ikU >>422
今回のにそれ関係ある?
今回のにそれ関係ある?
431デフォルトの名無しさん
2021/12/29(水) 18:01:13.94ID:tast0kyj 規模は違えど今回の事例と同様の体験をした人・組織は少なくなさそう
432デフォルトの名無しさん
2021/12/29(水) 18:01:34.74ID:o6aVS5Lj inode云々は問題の表層でしかない
実行中のスクリプトが新しくなったからといって77TBものユーザーデータをサクッと削除しちゃえるのがおかしい
何重にもガードできているのが当たり前の案件
実行中のスクリプトが新しくなったからといって77TBものユーザーデータをサクッと削除しちゃえるのがおかしい
何重にもガードできているのが当たり前の案件
433デフォルトの名無しさん
2021/12/29(水) 19:12:14.86ID:DIjHY86S >>426
あくまで「シェル」なんやし、入力を逐次実行するのが仕様やろ?
あくまで「シェル」なんやし、入力を逐次実行するのが仕様やろ?
434デフォルトの名無しさん
2021/12/29(水) 19:12:44.47ID:DIjHY86S >>432
コストとのバランス。
コストとのバランス。
435デフォルトの名無しさん
2021/12/29(水) 21:10:55.07ID:t8aruUm+ スパコン系の人達は運用周りのリテラシーすごく低い
シェルスクリプトしか知らない人達よりもひどいくらい
シェルスクリプトしか知らない人達よりもひどいくらい
436デフォルトの名無しさん
2021/12/30(木) 00:46:59.13ID:IL1LVlOR437デフォルトの名無しさん
2021/12/30(木) 01:04:22.58ID:v9gi5gW5 Javaが出てくる意味が分からん
438デフォルトの名無しさん
2021/12/30(木) 01:12:51.79ID:IL1LVlOR Javaで作れば安全だからです!
439デフォルトの名無しさん
2021/12/30(木) 01:25:09.88ID:TO85sxcb log4jで消そう
440デフォルトの名無しさん
2021/12/30(木) 01:49:09.54ID:wfs2tbs7 perlのワンライナーでやるべき
441デフォルトの名無しさん
2021/12/30(木) 02:02:44.37ID:bPzpLvLZ >>425
installコマンドを使わないバカが多いからなあ
installコマンドを使わないバカが多いからなあ
442デフォルトの名無しさん
2021/12/30(木) 02:05:00.83ID:bPzpLvLZ >>426
bashそのものじゃなくてスクリプトの方だぞ
bashそのものじゃなくてスクリプトの方だぞ
443デフォルトの名無しさん
2021/12/30(木) 02:15:01.93ID:IL1LVlOR444デフォルトの名無しさん
2021/12/30(木) 02:25:12.29ID:IL1LVlOR >>426
bashに限らずevalが使えるスクリプト言語はどれも似たようなもの
その方が効率がいいから
ファイルを全部メモリに読み込んでたらメモリの無駄遣い。必要になった時に読み込んで
コンパイルして中間コードをメモリに保存したほうが効率がいい
書き換えたところから実行する仕様とかじゃなくて
読み込み中にファイル内容が書き換わっただけ
bashに限らずevalが使えるスクリプト言語はどれも似たようなもの
その方が効率がいいから
ファイルを全部メモリに読み込んでたらメモリの無駄遣い。必要になった時に読み込んで
コンパイルして中間コードをメモリに保存したほうが効率がいい
書き換えたところから実行する仕様とかじゃなくて
読み込み中にファイル内容が書き換わっただけ
445デフォルトの名無しさん
2021/12/30(木) 05:20:47.81ID:jspnt6Wc #!/bin/sh
{
# Your stuff goes here
exit
}
って書くと、全部読み込んでから実行する…らしい。
{
# Your stuff goes here
exit
}
って書くと、全部読み込んでから実行する…らしい。
446デフォルトの名無しさん
2021/12/30(木) 05:51:55.73ID:W4YtctsR447デフォルトの名無しさん
2021/12/30(木) 05:57:08.73ID:jspnt6Wc >>446
REPL(Read-Eval-Print Loop)が使えるスクリプト言語あたりが妥当?
REPL(Read-Eval-Print Loop)が使えるスクリプト言語あたりが妥当?
448デフォルトの名無しさん
2021/12/30(木) 06:03:55.94ID:IL1LVlOR >>446
検証してないけどPerlとPHPも同じらしい
それに厳密に言えばRubyでスクリプトを起動している途中で
gemsをアップデートしたらおかしくなる可能性があるやろ?
今から読み込もうとしたライブラリファイルが
中途半端に入れ替わってる可能性がある
シェルスクリプトは1ファイルの中で中途半端に
読み込まれて実行されてる可能性があるが
他のスクリプト言語は、それはないかもしれないけど
複数のファイルで構成されてる場合、中途半端に読み込まれて
実行されてる可能性がある
そしてバイナリでも動的にライブラリを読み込むようなものがあれば
同じようなことになる可能性がある
検証してないけどPerlとPHPも同じらしい
それに厳密に言えばRubyでスクリプトを起動している途中で
gemsをアップデートしたらおかしくなる可能性があるやろ?
今から読み込もうとしたライブラリファイルが
中途半端に入れ替わってる可能性がある
シェルスクリプトは1ファイルの中で中途半端に
読み込まれて実行されてる可能性があるが
他のスクリプト言語は、それはないかもしれないけど
複数のファイルで構成されてる場合、中途半端に読み込まれて
実行されてる可能性がある
そしてバイナリでも動的にライブラリを読み込むようなものがあれば
同じようなことになる可能性がある
449デフォルトの名無しさん
2021/12/30(木) 06:43:40.02ID:QArx8wCq 動的なのがあれば、な・・・
450デフォルトの名無しさん
2021/12/30(木) 09:02:46.96ID:InFuAQoQ こういう面倒なことになるからWindowsはアップデートの時に再起動が必要な仕様にしたんだよね
451デフォルトの名無しさん
2021/12/30(木) 09:39:47.43ID:rDu++FLs ツッコミどころが多すぎるんだよなぁ
しいて他山の石とするなら
findの結果を直で削除せず
チェックしてから削除したほうがいいってことくらいかな
しいて他山の石とするなら
findの結果を直で削除せず
チェックしてから削除したほうがいいってことくらいかな
452デフォルトの名無しさん
2021/12/30(木) 09:58:18.91ID:uV4Ti94h453デフォルトの名無しさん
2021/12/30(木) 10:30:47.99ID:IL1LVlOR >>451
突っ込みどころが多いのはお前だろ
どうやってシェルスクリプトでfindの結果をチェックして削除済んだよ
しかもそのチェックコードすら書き換わるって話だろ
何が問題になってるのかわかってない
突っ込みどころが多いのはお前だろ
どうやってシェルスクリプトでfindの結果をチェックして削除済んだよ
しかもそのチェックコードすら書き換わるって話だろ
何が問題になってるのかわかってない
454デフォルトの名無しさん
2021/12/30(木) 10:31:51.45ID:IL1LVlOR >>452
特殊なケースで発生するって言ってんじゃんw
特殊なケースで発生するって言ってんじゃんw
455デフォルトの名無しさん
2021/12/30(木) 10:40:55.52ID:O8K8cDY/ 必死すぎて草
456デフォルトの名無しさん
2021/12/30(木) 11:23:36.83ID:IL1LVlOR 反論できてなくて草w
457デフォルトの名無しさん
2021/12/30(木) 12:07:43.56ID:WfZiLBBo >>448
>それに厳密に言えばRubyでスクリプトを起動している途中で
>gemsをアップデートしたらおかしくなる可能性があるやろ?
そういう運用を前提にするなら起動途中にgemをアップデートしてもおかしくならないように作ればいい
>それに厳密に言えばRubyでスクリプトを起動している途中で
>gemsをアップデートしたらおかしくなる可能性があるやろ?
そういう運用を前提にするなら起動途中にgemをアップデートしてもおかしくならないように作ればいい
458デフォルトの名無しさん
2021/12/30(木) 12:09:53.89ID:IL1LVlOR シェルスクリプトの場合{ } で全体をくくって作ればおかしくならない
459デフォルトの名無しさん
2021/12/30(木) 12:59:41.27ID:W4YtctsR460デフォルトの名無しさん
2021/12/30(木) 13:01:44.37ID:W4YtctsR >>447
要するに、シェル系だけなんちゃうの?w
要するに、シェル系だけなんちゃうの?w
461デフォルトの名無しさん
2021/12/30(木) 13:07:53.94ID:W4YtctsR462デフォルトの名無しさん
2021/12/30(木) 13:58:37.21ID:A3EHubzP とりあえず手持ちの(Ubuntu20.04のデフォルト)環境だと
testと表示される
```
#!/bin/sh
echo echo test >> $0
```
testと表示される
```
#!/bin/sh
{
echo echo test >> $0
}
```
testと表示されない
```
#!/usr/bin/python3
import sys
with open(sys.argv[0], "a")as f:
f.write("print('test')")
```
/bin/sh はファイルを展開したまま参照してるけど、
/usr/bin/python3 は一度どっかにコピー(構文解析済みキャッシュ)してるから実行中の上書きが反映されない感じだと思う
testと表示される
```
#!/bin/sh
echo echo test >> $0
```
testと表示される
```
#!/bin/sh
{
echo echo test >> $0
}
```
testと表示されない
```
#!/usr/bin/python3
import sys
with open(sys.argv[0], "a")as f:
f.write("print('test')")
```
/bin/sh はファイルを展開したまま参照してるけど、
/usr/bin/python3 は一度どっかにコピー(構文解析済みキャッシュ)してるから実行中の上書きが反映されない感じだと思う
463デフォルトの名無しさん
2021/12/30(木) 16:24:30.20ID:W4YtctsR464デフォルトの名無しさん
2021/12/30(木) 17:21:00.62ID:p57leh5q >>453
君のところでは実行中に直接上書きするのが当たり前なの?
うちではそんなことしないから考慮する必要ないんだよね
削除に至るまでのセーフガードが他にもいくつかあるからあえて教訓を得るなら削除前のチェックかなって話
君のところでは実行中に直接上書きするのが当たり前なの?
うちではそんなことしないから考慮する必要ないんだよね
削除に至るまでのセーフガードが他にもいくつかあるからあえて教訓を得るなら削除前のチェックかなって話
465デフォルトの名無しさん
2021/12/30(木) 18:18:54.05ID:QArx8wCq プログラム上書きで動作を変えられるというのは、ある意味脆弱性と言えるかな
権限奪われた後でしか起こせないけど
権限奪われた後でしか起こせないけど
466デフォルトの名無しさん
2021/12/30(木) 18:28:25.88ID:QArx8wCq Perlとかはプログラム全部読んでから内部コードにコンパイルしてからそれを実行するので動的な部分以外は大丈夫だと思う
Perl で動的というと eval に文字列引き渡した場合と require でソース読んだ場合かな
シェルで言うと eval とドットや soure でのソース読み込み
Perl で動的というと eval に文字列引き渡した場合と require でソース読んだ場合かな
シェルで言うと eval とドットや soure でのソース読み込み
467デフォルトの名無しさん
2021/12/30(木) 22:04:38.94ID:vZc7D3zM >>443
説明が足りないんじゃない?
単一のシェルスクリプトの場合は、更新時にinodeが変わってれば大丈夫。で終わり。
シェルスクリプトから、別のシェルスクリプトを読んでる場合は、
読み込む行でpathを評価するから、
読み込むシェルスクリプトだけが新しくなって、読み出し元シェルスクリプトが環境変数を持たない結果、同じ事象が発生する可能性はある。
だから、
installを使ったからと言って、すべてのトラブルを避けられるわけではない
と言うのであれば妥当
説明が足りないんじゃない?
単一のシェルスクリプトの場合は、更新時にinodeが変わってれば大丈夫。で終わり。
シェルスクリプトから、別のシェルスクリプトを読んでる場合は、
読み込む行でpathを評価するから、
読み込むシェルスクリプトだけが新しくなって、読み出し元シェルスクリプトが環境変数を持たない結果、同じ事象が発生する可能性はある。
だから、
installを使ったからと言って、すべてのトラブルを避けられるわけではない
と言うのであれば妥当
468デフォルトの名無しさん
2021/12/30(木) 23:01:21.28ID:jmc3LnTL そこは重大な障害に至った本質的な原因じゃないからな
469デフォルトの名無しさん
2021/12/31(金) 00:01:34.88ID:tL7Nlh3I470デフォルトの名無しさん
2021/12/31(金) 00:02:22.53ID:tL7Nlh3I >>463
> いいや、閉じ括弧の後、EOFを検出する前(要はブロック実行中)に行が追加されるリスクがあるやろ。
{
exit
}
閉じカッコの後が実行されるとでも思ってんの?
> いいや、閉じ括弧の後、EOFを検出する前(要はブロック実行中)に行が追加されるリスクがあるやろ。
{
exit
}
閉じカッコの後が実行されるとでも思ってんの?
471デフォルトの名無しさん
2021/12/31(金) 00:03:22.20ID:tL7Nlh3I472デフォルトの名無しさん
2021/12/31(金) 00:03:51.43ID:tL7Nlh3I473デフォルトの名無しさん
2021/12/31(金) 00:05:13.58ID:tL7Nlh3I474デフォルトの名無しさん
2021/12/31(金) 00:05:43.76ID:tL7Nlh3I >>460
PerlとPHPもおなじ
PerlとPHPもおなじ
475デフォルトの名無しさん
2021/12/31(金) 00:15:48.12ID:K3Q5NoN0 ティム・クックCEOとのランチには5,500円ではなく5,500万円以上必要!
Appleのティム・クックCEOとのランチをする権利のチャリティーオークションが終了しました。
結果は51,500ドル以上(約5,500万円以上)で落札されたそうです。
このオークション、落札者にはティム・クックCEOとランチができる権利とAppleイベントの
基調講演に参加できるVIPパス2枚がついてきます。
2013年は約6,200万円、2014年は約3,300万円、2015年は約2,400万円で落札されていました。
今回は約5,500万円なので高値で落札されていますね。
しかしお高いランチ代。いったい誰が落札したんでしょうか。
Appleのティム・クックCEOとのランチをする権利のチャリティーオークションが終了しました。
結果は51,500ドル以上(約5,500万円以上)で落札されたそうです。
このオークション、落札者にはティム・クックCEOとランチができる権利とAppleイベントの
基調講演に参加できるVIPパス2枚がついてきます。
2013年は約6,200万円、2014年は約3,300万円、2015年は約2,400万円で落札されていました。
今回は約5,500万円なので高値で落札されていますね。
しかしお高いランチ代。いったい誰が落札したんでしょうか。
476デフォルトの名無しさん
2021/12/31(金) 00:16:13.59ID:tL7Nlh3I >>475
俺だよ
俺だよ
477デフォルトの名無しさん
2021/12/31(金) 00:56:01.88ID:QVDmbS0E >>471
installについてだけ突っ込んでるけど、
文書の本質は、inodeか変わる場合は、という意味で話してるのは理解してるか?
mvで上書きするとinode変わると信じてるけど、
installつかったすべての状況で、inode変わるかまでは分からないから、
installを例に挙げたのが悪かったのは認める。
installについてだけ突っ込んでるけど、
文書の本質は、inodeか変わる場合は、という意味で話してるのは理解してるか?
mvで上書きするとinode変わると信じてるけど、
installつかったすべての状況で、inode変わるかまでは分からないから、
installを例に挙げたのが悪かったのは認める。
478デフォルトの名無しさん
2021/12/31(金) 01:01:12.81ID:tL7Nlh3I だーかーらーinstall使っても
inodeは変わらないって言ってんだろ
信じてるとかじゃなくて、ちゃんと調べろ
inodeは変わらないって言ってんだろ
信じてるとかじゃなくて、ちゃんと調べろ
479デフォルトの名無しさん
2021/12/31(金) 01:17:16.41ID:QVDmbS0E >>478
本質でないinstallについてだけツッコミたいということは理解した
本質でないinstallについてだけツッコミたいということは理解した
480デフォルトの名無しさん
2021/12/31(金) 01:19:12.98ID:tL7Nlh3I481デフォルトの名無しさん
2021/12/31(金) 02:12:06.87ID:FGQbYFO9482デフォルトの名無しさん
2021/12/31(金) 02:37:27.40ID:JipSLIiO https://stackoverflow.com/questions/21096478/overwrite-executing-bash-script-files
The { forces the shell to read at least through the matching } in order to properly parse the command, and the exit then makes sure it'll never try to execute anything that gets added after that }.
BTW, I was testing this with bash version 3.2.48(1)-release (on OS X 10.8.5); other versions may behave differently...
UPDATE: Other versions do indeed behave differently. I tried the same test with version 4.3.0(1)-release (under NetBSD 6.1.4), and it continued to run the old code after the file's contents had been replaced. Apparently it now buffers the file in 8KB blocks (see this unix.se answer).
The { forces the shell to read at least through the matching } in order to properly parse the command, and the exit then makes sure it'll never try to execute anything that gets added after that }.
BTW, I was testing this with bash version 3.2.48(1)-release (on OS X 10.8.5); other versions may behave differently...
UPDATE: Other versions do indeed behave differently. I tried the same test with version 4.3.0(1)-release (under NetBSD 6.1.4), and it continued to run the old code after the file's contents had been replaced. Apparently it now buffers the file in 8KB blocks (see this unix.se answer).
483デフォルトの名無しさん
2021/12/31(金) 02:50:56.77ID:JipSLIiO Under bash 5..0.3(1)-release on linux, it reads in 8KB blocks... but this doesn't prevent the error (in the version without the {}s), because, after the sleep is done, it seeks back to the position in the file just after the sleep! Strange behavior. {}s still protect it, good answer.
484デフォルトの名無しさん
2021/12/31(金) 12:57:25.57ID:nXuYiPI/485デフォルトの名無しさん
2021/12/31(金) 14:35:36.48ID:fEOKhR13 お前は { ...; exit;} での対策が無効と思ってるのか?
それともそんな面倒なこと徹底できるわけないと思ってるのか?
それともそんな面倒なこと徹底できるわけないと思ってるのか?
486デフォルトの名無しさん
2021/12/31(金) 15:21:35.07ID:3oIZShwK >ファイルを全部メモリに読み込んでたらメモリの無駄遣い
メモリの無駄遣いじゃなかったの?
メモリの無駄遣いじゃなかったの?
487デフォルトの名無しさん
2021/12/31(金) 15:44:50.78ID:tL7Nlh3I488デフォルトの名無しさん
2021/12/31(金) 15:45:56.85ID:tL7Nlh3I489デフォルトの名無しさん
2021/12/31(金) 15:46:40.16ID:tL7Nlh3I 例えばコメントとかメモリに置いておく必要はないよな
空白もそのままメモリに保持するのはメモリの無駄遣いでしかない
空白もそのままメモリに保持するのはメモリの無駄遣いでしかない
490デフォルトの名無しさん
2021/12/31(金) 16:10:52.10ID:x+iSzQey >>488
何言ってんのw
何言ってんのw
491デフォルトの名無しさん
2021/12/31(金) 16:59:46.95ID:fEOKhR13492デフォルトの名無しさん
2021/12/31(金) 21:32:31.66ID:tL7Nlh3I >>490
わからないの?コンパイラの仕組みとか勉強したほうが良いよ。
わからないの?コンパイラの仕組みとか勉強したほうが良いよ。
493デフォルトの名無しさん
2021/12/31(金) 21:34:32.21ID:tL7Nlh3I494デフォルトの名無しさん
2021/12/31(金) 22:02:04.77ID:FGQbYFO9 >>492
おまえが常識を知るべき。w
おまえが常識を知るべき。w
495デフォルトの名無しさん
2022/01/01(土) 01:34:30.30ID:X6UBQb83496デフォルトの名無しさん
2022/01/01(土) 01:48:54.59ID:X6UBQb83 まあ俺は優しいから教えてやろうw
{ echo '#!/bin/sh'; printf '#%100s\n' {1..1000000}; echo sleep 30; echo end; } > scr.sh
これで100MBぐらいのシェルスクリプトができる
これを実行しても3MBぐらいしかメモリは食わない
内部形式は小さいからだ
これを全部メモリに蓄えておくと100MB以上消費する
最初にパースして内部形式にする方式は
後ろにバイナリとかがついている時ににエラーになるから使えない
{ echo '#!/bin/sh'; printf '#%100s\n' {1..1000000}; echo sleep 30; echo end; } > scr.sh
これで100MBぐらいのシェルスクリプトができる
これを実行しても3MBぐらいしかメモリは食わない
内部形式は小さいからだ
これを全部メモリに蓄えておくと100MB以上消費する
最初にパースして内部形式にする方式は
後ろにバイナリとかがついている時ににエラーになるから使えない
497デフォルトの名無しさん
2022/01/01(土) 02:25:58.45ID:4YArnW91 ヤバいww マジもんのアホの子だったwww
498デフォルトの名無しさん
2022/01/01(土) 02:34:27.52ID:C+d3qbg4 { echo '#!/bin/sh'; echo '{'; printf 'printf %s\n' {1..1000000}; echo sleep 30; echo '}'; } > scr.sh
「内部形式は小さいからだ」wwwww
「内部形式は小さいからだ」wwwww
499デフォルトの名無しさん
2022/01/01(土) 02:37:31.29ID:MVIeZ8kP echo "あけおめ $(TZ=Asia/Tokyo date +%Y)"
500デフォルトの名無しさん
2022/01/01(土) 03:08:50.88ID:IS6zNVE1 今回のケースって世代バックアップとかやってたとしても
それを掴んでたバックアップスクリプト自体が上書きされて暴走して余計なファイルまで全消ししたわけだよね
>実行中のスクリプトが存在している状態でスクリプトの上書きによりリリースしてしまった
問題はここだけだと思うんだけど
酷く杜撰な運用に見える
*nix使いってこの程度のITリテラシーしかないんだね
気持ち悪い
それを掴んでたバックアップスクリプト自体が上書きされて暴走して余計なファイルまで全消ししたわけだよね
>実行中のスクリプトが存在している状態でスクリプトの上書きによりリリースしてしまった
問題はここだけだと思うんだけど
酷く杜撰な運用に見える
*nix使いってこの程度のITリテラシーしかないんだね
気持ち悪い
501デフォルトの名無しさん
2022/01/01(土) 04:56:33.89ID:eqRzM57+502デフォルトの名無しさん
2022/01/01(土) 09:21:39.56ID:xOGFhMUK503デフォルトの名無しさん
2022/01/01(土) 09:27:14.46ID:xOGFhMUK >>501
実行中なら中断するか終了を待ってから新しいのをリリースすればいいだけだろ
日次バッチを中断したり終了を待つのに金も時間もかなりかかるのかい?
他にも例えば権限管理をまともにしてれば防げたよね?
実行中なら中断するか終了を待ってから新しいのをリリースすればいいだけだろ
日次バッチを中断したり終了を待つのに金も時間もかなりかかるのかい?
他にも例えば権限管理をまともにしてれば防げたよね?
504デフォルトの名無しさん
2022/01/01(土) 10:19:02.42ID:EsvsX5UV >>500
バックアップ容量が多いと、書き込み先の書き込み速度以上のスピードはでないから、
複数世代バックアップするにも、ずっーとバックアップというかコピーというかの処理をし続けることになる。
月次フルバックアップ処理中に、次の増分バックアップ処理が始まるのはテープの場合はよくある。
今回は復元不能と言っていることから過去のバックアップも消えてそうでD2Dっぽいけど、
そういう設計なら基本的にスクリプトは止められないから、
止まったときに更新するんじゃなく、
別のスクリプトをリリースして、古いスクリプトを退役させるような方式を選ぶと思う。
毎日すぐに処理が終わるようなスクリプトしか目にしてないエンジニアが、
そんな設計とは知らず、そのまま更新しちゃったとかそんな理由なんじゃないかなあ?
バックアップ容量が多いと、書き込み先の書き込み速度以上のスピードはでないから、
複数世代バックアップするにも、ずっーとバックアップというかコピーというかの処理をし続けることになる。
月次フルバックアップ処理中に、次の増分バックアップ処理が始まるのはテープの場合はよくある。
今回は復元不能と言っていることから過去のバックアップも消えてそうでD2Dっぽいけど、
そういう設計なら基本的にスクリプトは止められないから、
止まったときに更新するんじゃなく、
別のスクリプトをリリースして、古いスクリプトを退役させるような方式を選ぶと思う。
毎日すぐに処理が終わるようなスクリプトしか目にしてないエンジニアが、
そんな設計とは知らず、そのまま更新しちゃったとかそんな理由なんじゃないかなあ?
505デフォルトの名無しさん
2022/01/01(土) 11:10:41.01ID:eqRzM57+ >>503
そんなのなら本気やないな。w
テラバイトレベルのバックアップをしっかり実装すんのはなかなかやと思うが。
「日次」でいけるかどうかもあやしいやろ。
クリティカルなシステムでもなし、ただ甘く見てた、てところやろうとは思うが。
そんなのなら本気やないな。w
テラバイトレベルのバックアップをしっかり実装すんのはなかなかやと思うが。
「日次」でいけるかどうかもあやしいやろ。
クリティカルなシステムでもなし、ただ甘く見てた、てところやろうとは思うが。
506デフォルトの名無しさん
2022/01/01(土) 11:53:24.53ID:vr0aJE4l >>505
長時間かかる処理は普通suspend/resumeできるようにするよね?
自作しなくても市販のソフト買ってもいいし
日次で終わるかどうかは障害とは関係ないが
ミラーリングなのに日次で終わらないようなら作りが悪いよ
それにバックアップスクリプトに削除を混ぜるのがそもそも間違い
ジョブの単位や依存関係の管理が杜撰
長時間かかる処理は普通suspend/resumeできるようにするよね?
自作しなくても市販のソフト買ってもいいし
日次で終わるかどうかは障害とは関係ないが
ミラーリングなのに日次で終わらないようなら作りが悪いよ
それにバックアップスクリプトに削除を混ぜるのがそもそも間違い
ジョブの単位や依存関係の管理が杜撰
507デフォルトの名無しさん
2022/01/01(土) 12:42:08.01ID:eqRzM57+ スパコンの市販ソフトって、どこで売ってんの?w
508デフォルトの名無しさん
2022/01/01(土) 15:00:36.73ID:w7Saqf4k509デフォルトの名無しさん
2022/01/01(土) 15:06:02.27ID:9R1m0X3m510デフォルトの名無しさん
2022/01/01(土) 15:08:39.26ID:9R1m0X3m511デフォルトの名無しさん
2022/01/01(土) 15:51:26.55ID:s/zRpYH/ 今までしてなかったのか…
512デフォルトの名無しさん
2022/01/01(土) 16:05:12.10ID:5XWhCSq7 >>472
動的な部分以外で?
動的な部分以外で?
513デフォルトの名無しさん
2022/01/01(土) 20:11:57.76ID:VJKo4de7 >>475
俺、ティム・クックと0円でランチを一緒にしたことあるぞ。
例の宇宙船にほど近いレストランのカウンター席でメシを食ってたら隣に誰か座ってきた。
その人は電話をしまくってて、落ち着かねー奴だなーと思って顔をよく見たら... !!!
俺、ティム・クックと0円でランチを一緒にしたことあるぞ。
例の宇宙船にほど近いレストランのカウンター席でメシを食ってたら隣に誰か座ってきた。
その人は電話をしまくってて、落ち着かねー奴だなーと思って顔をよく見たら... !!!
514デフォルトの名無しさん
2022/01/01(土) 21:57:57.81ID:eqRzM57+515デフォルトの名無しさん
2022/01/01(土) 22:33:56.61ID:OowWZOH4 >>498
それ内部形式じゃないぞ?
100MBのシェルスクリプトのソースコードを生成してるだけ
100MBのシェルスクリプトを実行してもわずかのメモリしか消費しない
内部形式は小さいからだ!
やっぱアホの子はお前の方?w
それ内部形式じゃないぞ?
100MBのシェルスクリプトのソースコードを生成してるだけ
100MBのシェルスクリプトを実行してもわずかのメモリしか消費しない
内部形式は小さいからだ!
やっぱアホの子はお前の方?w
516デフォルトの名無しさん
2022/01/01(土) 23:26:19.57ID:2clFsvDI >>514
off-the-shelf softwareの日本語訳だよ
そこら辺の電気屋さんとかで買えるという意味の市販とは確かに違うが
市販ソフトって言葉は文脈によってもう少し広い意味になるよ
勉強になった?
off-the-shelf softwareの日本語訳だよ
そこら辺の電気屋さんとかで買えるという意味の市販とは確かに違うが
市販ソフトって言葉は文脈によってもう少し広い意味になるよ
勉強になった?
517デフォルトの名無しさん
2022/01/02(日) 00:17:01.00ID:krHLUjqu518デフォルトの名無しさん
2022/01/02(日) 02:41:50.85ID:rJLs0hO4 >>517
Linux用でいいのでは?
https://support.hpe.com/hpesc/public/docDisplay?docId=a00109703ja_jp&docLocale=ja_JP
オペレーティングシステム
HPE Cray Linux Environment
HPE Cray Programming Environment
Intel Parallel Studio XE (およびIntel MPI)
PGI Professional Edition
GNUコンパイラコレクション
Rogue Wave SoftwareのTotalView
AMD AOCC
Vampir
GNUコンパイラ
Linux用でいいのでは?
https://support.hpe.com/hpesc/public/docDisplay?docId=a00109703ja_jp&docLocale=ja_JP
オペレーティングシステム
HPE Cray Linux Environment
HPE Cray Programming Environment
Intel Parallel Studio XE (およびIntel MPI)
PGI Professional Edition
GNUコンパイラコレクション
Rogue Wave SoftwareのTotalView
AMD AOCC
Vampir
GNUコンパイラ
519デフォルトの名無しさん
2022/01/02(日) 02:43:01.97ID:rJLs0hO4 https://www.hpe.com/jp/ja/product-catalog/detail/pip.hpe-cray-operating-system.1012842044.html
HPE Cray OSは、ハイパフォーマンスコンピューティング向けに機能強化された
SUSER Linux Enterprise Server (SLES) をベースとしています。
ふむ。SUSEのパッケージ全部動きそうだけど?
HPE Cray OSは、ハイパフォーマンスコンピューティング向けに機能強化された
SUSER Linux Enterprise Server (SLES) をベースとしています。
ふむ。SUSEのパッケージ全部動きそうだけど?
520デフォルトの名無しさん
2022/01/02(日) 03:09:01.94ID:zid9yl1I >>515
計測してから出直してww
計測してから出直してww
521デフォルトの名無しさん
2022/01/02(日) 10:42:41.52ID:8JZTRTCW522デフォルトの名無しさん
2022/01/02(日) 12:46:42.90ID:krHLUjqu523デフォルトの名無しさん
2022/01/02(日) 12:49:12.64ID:krHLUjqu524デフォルトの名無しさん
2022/01/02(日) 12:53:06.50ID:o9R7ffl7 >>472
LinuxでPerlで実験してみたが同じ問題は出なかったぞ。
$0 のファイルにプログラムを追加書き込みしてもその部分は実行されない。
シェルで同様に$0に追加書き込みしたらその部分は実行された。
LinuxでPerlで実験してみたが同じ問題は出なかったぞ。
$0 のファイルにプログラムを追加書き込みしてもその部分は実行されない。
シェルで同様に$0に追加書き込みしたらその部分は実行された。
525デフォルトの名無しさん
2022/01/02(日) 14:36:43.42ID:RXuS28pT526デフォルトの名無しさん
2022/01/02(日) 14:56:13.51ID:o9R7ffl7 だよなあ。eval や動的にソース読んで実行する個所以外は問題ないよなあ。
527デフォルトの名無しさん
2022/01/02(日) 16:04:09.36ID:rJLs0hO4528デフォルトの名無しさん
2022/01/02(日) 16:05:33.33ID:rJLs0hO4529デフォルトの名無しさん
2022/01/02(日) 17:18:56.44ID:uxcqsBQo530デフォルトの名無しさん
2022/01/02(日) 17:21:21.53ID:TQn3/Mee inodeを同じにして実験してみろ。
531デフォルトの名無しさん
2022/01/02(日) 18:18:29.48ID:krHLUjqu532デフォルトの名無しさん
2022/01/02(日) 18:23:43.20ID:krHLUjqu533デフォルトの名無しさん
2022/01/02(日) 18:38:07.35ID:9WH/m7VC 市販とは、必ずしも店頭売りとは限らんぞ?
534デフォルトの名無しさん
2022/01/02(日) 18:46:21.78ID:TQn3/Mee 通販か、楽天か。
535デフォルトの名無しさん
2022/01/02(日) 20:57:18.99ID:krHLUjqu >>533
それでもええから、どこや?
それでもええから、どこや?
536デフォルトの名無しさん
2022/01/02(日) 21:30:44.40ID:pRhI5t2q >>531
サチコ、それ代理店経由で市販ソフトを購入した言うんやで・・・
サチコ、それ代理店経由で市販ソフトを購入した言うんやで・・・
537デフォルトの名無しさん
2022/01/02(日) 21:51:30.45ID:TQn3/Mee GPGPU対応ソフトウェアはMacが一番多いそうだけどね。
意外だよね。
意外だよね。
538デフォルトの名無しさん
2022/01/02(日) 23:40:10.01ID:TQn3/Mee https://www.j-focus.or.jp/focus/application.html
市販ソフトは普通にあるみたいだよ。
市販ソフトは普通にあるみたいだよ。
539デフォルトの名無しさん
2022/01/02(日) 23:57:26.17ID:GoZUBNyV540デフォルトの名無しさん
2022/01/03(月) 00:01:22.65ID:3eYYTX8d ノード数で値段が変わるソフトはスパコンを念頭に置いてるんだな。
541デフォルトの名無しさん
2022/01/03(月) 02:53:21.64ID:NkK7sfLH >>532
ファイルやソケットや標準入力から読んで作った文字列を eval に渡すなんてのがあったらダメかも知れないが、
これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
require でソース読むやつは事前にチェックされてないのではないかな?
use でのモジュール読み込みはコンパイルされるが。
ファイルやソケットや標準入力から読んで作った文字列を eval に渡すなんてのがあったらダメかも知れないが、
これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
require でソース読むやつは事前にチェックされてないのではないかな?
use でのモジュール読み込みはコンパイルされるが。
542デフォルトの名無しさん
2022/01/03(月) 03:07:40.68ID:bmMFL9ij パール爺さんウザイ
543デフォルトの名無しさん
2022/01/03(月) 03:10:09.55ID:NkK7sfLH すまんのう。
544デフォルトの名無しさん
2022/01/03(月) 03:20:04.46ID:AIc8F3zq フルーツパーラー
545デフォルトの名無しさん
2022/01/03(月) 04:04:45.94ID:mfU61qLK パーラーリラパラリラ
546デフォルトの名無しさん
2022/01/03(月) 04:04:54.39ID:cOflznJy 正直、何となくまずいとは感じる程度のものだったけど解像度が上がって良かったと思ってる
単純なファイル操作だけど対象が巨大で時間がかかるってのは中々お目にかからない
単純なファイル操作だけど対象が巨大で時間がかかるってのは中々お目にかからない
547デフォルトの名無しさん
2022/01/03(月) 09:44:56.65ID:8bAzmZsa548デフォルトの名無しさん
2022/01/03(月) 10:01:01.93ID:mfU61qLK わかるなら説明しろ。そうやって回答から逃げる手だってバレバレだ。
549デフォルトの名無しさん
2022/01/03(月) 12:52:48.32ID:AKaSmxyk >>541
> require でソース読むやつは事前にチェックされてないのではないかな?
だからなに?
自分で書いてるやん。w
> これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
ただし、実行時でなくロード時に読みきることは変わらないので、結局、シェルスクリプトほどのリスクはない。
> require でソース読むやつは事前にチェックされてないのではないかな?
だからなに?
自分で書いてるやん。w
> これはもうプログラムの作りが悪いと言えるな。SQLインジェクションと同じだし。
ただし、実行時でなくロード時に読みきることは変わらないので、結局、シェルスクリプトほどのリスクはない。
550デフォルトの名無しさん
2022/01/03(月) 16:05:02.85ID:Tvis+k5K >メモリサイズはpsでわかる
そんな装備で大丈夫か?
そんな装備で大丈夫か?
551デフォルトの名無しさん
2022/01/03(月) 19:01:29.66ID:mfU61qLK シェルスクリプトのリスクは高い
なぜなら普通やるだろ?
起動中にプログラム書き換え
な?
なぜなら普通やるだろ?
起動中にプログラム書き換え
な?
552デフォルトの名無しさん
2022/01/03(月) 23:36:43.52ID:Izj8gspx やんないよw
頭おかしいやろ
頭おかしいやろ
553デフォルトの名無しさん
2022/01/03(月) 23:42:21.51ID:Sz4S1PaG 結局シェルスクリプトが原因じゃなく
シェルスクリプト使いの低スキルが原因だった
シェルスクリプト使いの低スキルが原因だった
554デフォルトの名無しさん
2022/01/04(火) 00:46:56.04ID:GepGyN7D 自己書き換えシェルスクリプトは、昔に見た記憶があるな。
動作がちゃんとわかってれば、有用な機能として使えるんだろ。
動作がちゃんとわかってれば、有用な機能として使えるんだろ。
555デフォルトの名無しさん
2022/01/04(火) 04:39:07.32ID:mpSUdZEa 例えばWindowsのログオンスクリプトとかに使われるバッチファイルもアトミックな更新が必要になるね
そういう場合はログインする可能性のない夜間とかを狙って更新したりする
スパコンのアホは、よりによってバックアップ中にバックアップのスクリプトを更新しようとした
上の例で言えば一番ログインが試行される始業時間帯とかを狙ってわざわざ更新するようなもの
どれだけ愚かな行為か想像できよう
そういう場合はログインする可能性のない夜間とかを狙って更新したりする
スパコンのアホは、よりによってバックアップ中にバックアップのスクリプトを更新しようとした
上の例で言えば一番ログインが試行される始業時間帯とかを狙ってわざわざ更新するようなもの
どれだけ愚かな行為か想像できよう
556デフォルトの名無しさん
2022/01/04(火) 05:34:07.92ID:A3JfSOSv OSやファイルシステムによっては出来ないかも知れないが、プログラム動作中に新バージョンへの入れ替えを
行っても動作しているプロセスはそのまま動かし続けて影響させず、次回起動時から新しい方が動く方式にして
おけば良かった。例えば Linux や UNIX 系 OS ならシンボリックリンクの指す先を変えることでこれは可能だ。
Windowsではどうやるか知らないがシンボリックリンクはあるようなので多分出来るんじゃないだろうか。
行っても動作しているプロセスはそのまま動かし続けて影響させず、次回起動時から新しい方が動く方式にして
おけば良かった。例えば Linux や UNIX 系 OS ならシンボリックリンクの指す先を変えることでこれは可能だ。
Windowsではどうやるか知らないがシンボリックリンクはあるようなので多分出来るんじゃないだろうか。
557デフォルトの名無しさん
2022/01/04(火) 06:04:36.10ID:mpSUdZEa >>556
Windowsだとリンクを一旦削除してから張り直す事になるから無理だろうね
リンク先が一旦消えるから、掴んでたバッチファイルは読み込みが途切れるか、
そもそも誰かが掴んでる状態ではリンクの削除に失敗するかどっちか
Windowsだとリンクを一旦削除してから張り直す事になるから無理だろうね
リンク先が一旦消えるから、掴んでたバッチファイルは読み込みが途切れるか、
そもそも誰かが掴んでる状態ではリンクの削除に失敗するかどっちか
558デフォルトの名無しさん
2022/01/04(火) 09:11:02.07ID:KoJ0HNB1 OSとしてはプログラムを実行中に入れ替え可能だとしても
アプリがそのように作られてない可能性はなくならない
アプリがそのように作られてない可能性はなくならない
559デフォルトの名無しさん
2022/01/04(火) 11:24:49.85ID:K01QBlyF 実行中に上書き更新しないのは当たり前
undefinedになった場合でも全データを削除しないように作るのも当たり前
どちらも当たり前だと思ってないやつが多数いるのがシェルスクリプト特有の問題
undefinedになった場合でも全データを削除しないように作るのも当たり前
どちらも当たり前だと思ってないやつが多数いるのがシェルスクリプト特有の問題
560デフォルトの名無しさん
2022/01/04(火) 11:53:26.50ID:+L/8HzOo 「全スクリプトを{ ...; exit; }で囲え」なんていうキチ・・・エッジな人もいる
561デフォルトの名無しさん
2022/01/04(火) 14:35:05.73ID:5xHtBJHw コマンドプロンプトとかいうゴミみたいなシェルは実行中にメモ帳から普通に上書き保存できるしbashみたいな更新問題がある
構文解析が闇鍋状態だからまともに(...&exit)でガードする気も起きん
構文解析が闇鍋状態だからまともに(...&exit)でガードする気も起きん
562デフォルトの名無しさん
2022/01/04(火) 14:40:41.27ID:5xHtBJHw 全スクリプトを{ ...;exit;}というとヤバいように見えるけど
... #オプション解析とか
main(){ ...;}
{ main "$@"; exit;}
とでもすれば多くの更新事故は防げると思う
... #オプション解析とか
main(){ ...;}
{ main "$@"; exit;}
とでもすれば多くの更新事故は防げると思う
563デフォルトの名無しさん
2022/01/04(火) 14:56:49.79ID:/LDsiUgA564デフォルトの名無しさん
2022/01/04(火) 14:57:43.78ID:/LDsiUgA565デフォルトの名無しさん
2022/01/04(火) 14:58:27.64ID:/LDsiUgA あ、コマンドプロンプトの話か。そっちはしらん
566デフォルトの名無しさん
2022/01/04(火) 15:13:42.85ID:MrAZHCc6567デフォルトの名無しさん
2022/01/04(火) 15:22:08.88ID:/LDsiUgA 防げないことにしたいやつも多いんだよなぁw
568デフォルトの名無しさん
2022/01/04(火) 16:48:36.33ID:96ZsKrQo569デフォルトの名無しさん
2022/01/04(火) 17:17:13.38ID:cDPvJZXV {}でくくった時の読み込み方は実装依存じゃなく仕様で保証されてる?
ここを読んだけどよく分からなかったや
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_02_03
ここを読んだけどよく分からなかったや
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_02_03
570デフォルトの名無しさん
2022/01/04(火) 21:09:09.26ID:64zZ84Fs >>568
無理
無理
571デフォルトの名無しさん
2022/01/04(火) 22:51:36.65ID:GepGyN7D >>568
sourceすりゃできんじゃないの?
sourceすりゃできんじゃないの?
572デフォルトの名無しさん
2022/01/04(火) 23:40:25.31ID:AW7Xm3ow >>571
やってみたら?
やってみたら?
573デフォルトの名無しさん
2022/01/05(水) 02:14:02.36ID:gXRPzTKb {} の中にsource入れとけばいいだろ
他のスクリプト言語と一緒
他のスクリプト言語と一緒
574デフォルトの名無しさん
2022/01/05(水) 02:56:20.38ID:5qnDyK1z いいわけないじゃん
575デフォルトの名無しさん
2022/01/05(水) 06:55:29.27ID:gXRPzTKb { } を使ってるってことは、最後の}まで読まないと実行しないんだから問題なし
{ } の中でsoruce使っていれば } を読み込んだあとでsourceが実行される
soruceで読み込むファイルでも同じように { } を使えば全部読み込まれた後に実行されるから問題なし
{ } の中でsoruce使っていれば } を読み込んだあとでsourceが実行される
soruceで読み込むファイルでも同じように { } を使えば全部読み込まれた後に実行されるから問題なし
576デフォルトの名無しさん
2022/01/05(水) 09:53:24.37ID:eMhfA/OR こいつダメだ
577デフォルトの名無しさん
2022/01/05(水) 10:18:42.52ID:xkk1B14s 低脳に絡み続ける君も同じだよ
578デフォルトの名無しさん
2022/01/05(水) 10:59:12.75ID:gXRPzTKb 低能だから{}の意味もわからない
579デフォルトの名無しさん
2022/01/05(水) 11:07:48.80ID:d+7VpUpG こういう低脳がゴロゴロ居るからやらかす奴が後を絶たない
580デフォルトの名無しさん
2022/01/05(水) 11:30:55.99ID:rp3p3Ei2 低脳は自分が低脳だと気付かないから始末が悪い
テストして確認しましたと言ってもその内容も方法も間違ってる
基本的に日本語が通じない
テストして確認しましたと言ってもその内容も方法も間違ってる
基本的に日本語が通じない
581デフォルトの名無しさん
2022/01/05(水) 12:38:42.04ID:yzDYKn2O 高い堅牢性が必要な処理にシェルスクリプトは向かない
582デフォルトの名無しさん
2022/01/05(水) 13:12:18.88ID:ga42ykuy こんな不確かな情報に頼ってまでやることじゃないと思うのだが
普通にスクリプト側に更新機能でも追加した方が確実だし
普通にスクリプト側に更新機能でも追加した方が確実だし
583デフォルトの名無しさん
2022/01/05(水) 13:18:00.85ID:ceAZRPz/ 低脳が携わらなければ何も問題無くなる
584デフォルトの名無しさん
2022/01/05(水) 14:45:39.80ID:3uURdH+S メモリ使用量を計測させれば
低脳の足切りが出来るぞ
低脳の足切りが出来るぞ
585デフォルトの名無しさん
2022/01/05(水) 21:24:39.70ID:gXRPzTKb {}が安全だとわからないアホは
}を読まないと文法が確定しないからって
理屈がわからないんだろうな
}を読まないと文法が確定しないからって
理屈がわからないんだろうな
586デフォルトの名無しさん
2022/01/05(水) 21:25:07.58ID:gXRPzTKb587デフォルトの名無しさん
2022/01/05(水) 21:25:43.70ID:gXRPzTKb588デフォルトの名無しさん
2022/01/05(水) 23:00:14.61ID:w3EWhbnX ホンモノのガイジなんだね。。
589デフォルトの名無しさん
2022/01/06(木) 10:05:53.46ID:oxm3scqT590デフォルトの名無しさん
2022/01/06(木) 15:32:38.44ID:mkXv+CyB >>586の方法は重大な欠陥が2つある
スパコンのデータ削除したやつと同レベル
スパコンのデータ削除したやつと同レベル
591デフォルトの名無しさん
2022/01/07(金) 00:05:11.34ID:5/GZEBm/ >>589
必死すぎじゃね?それで議論に勝ったつもりでいるんだろうけどさ
必死すぎじゃね?それで議論に勝ったつもりでいるんだろうけどさ
592デフォルトの名無しさん
2022/01/07(金) 00:05:37.54ID:5/GZEBm/ >>590
ないよ。一つも欠陥について述べられてない
ないよ。一つも欠陥について述べられてない
593デフォルトの名無しさん
2022/01/10(月) 00:22:34.19ID:MINWORCd スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA
594デフォルトの名無しさん
2022/01/10(月) 03:25:05.00ID:vc9CW7XN ケントってデリカット?
595デフォルトの名無しさん
2022/01/10(月) 15:35:23.09ID:z5NM8L7h 日本にいるのはギルバードの方
デリカットは帰国
デリカットは帰国
596デフォルトの名無しさん
2022/01/10(月) 17:42:51.83ID:vc9CW7XN 親子じゃないのか?
597デフォルトの名無しさん
2022/01/10(月) 23:18:15.37ID:6sJlMFRp 山形弁の人は?
598デフォルトの名無しさん
2022/01/16(日) 19:06:30.23ID:gUcw8FaB タバコだよ
599デフォルトの名無しさん
2022/01/21(金) 21:19:42.93ID:BxTeu8sU 藤林丈司
600デフォルトの名無しさん
2022/02/03(木) 14:44:47.61ID:PlIeOUah 質問スレなかったのでここで質問させてください。
フォルダ以下の全てのファイル内の特定の文字列からn行ずれた文字列を置換したいんですが、どういうコマンドを打ったら良いでしょうか?
具体的にやりたいこととしては、Unityのprefabファイルやsceneファイル(テキストファイル)に張り付いている特定のコンポーネントの名前を一括で置換したいです。
ファイルの構造は↓こんな感じになっていて、guidがc5b2e3eb25e32904fa18c5ae09b782d9の行の1行下のm_nameを書き換えたいんですが、コマンドがうまく動きません
https://github.com/Unity-Technologies/FPSSample/blob/master/Assets/Prefabs/Cameras/ServerCameraSpot.prefab#L51
作りかけのコマンド
git grep -n c5b2e3eb25e32904fa18c5ae09b782d9-- '*.prefab' | cut -f 1,2 -d ":" | awk -F ":" '{print $1 ":"($2 + 1)}' | sed -n $2p
適当にsedでm_nameを置換指定してしまうと、guidがc5b2e3eb25e32904fa18c5ae09b782d9以外のものまで置換してしまうので、
最初のgit grepでファイル名と行番号他を取得し、次のcutでファイル名と行番号だけにして、awkで行番号+1して、ファイル名と+1した行番号を元に、
ファイル名と行番号を指定したsed -eをしたいんですがprintしたものがうまく最後のsedに渡ってきません
フォルダ以下の全てのファイル内の特定の文字列からn行ずれた文字列を置換したいんですが、どういうコマンドを打ったら良いでしょうか?
具体的にやりたいこととしては、Unityのprefabファイルやsceneファイル(テキストファイル)に張り付いている特定のコンポーネントの名前を一括で置換したいです。
ファイルの構造は↓こんな感じになっていて、guidがc5b2e3eb25e32904fa18c5ae09b782d9の行の1行下のm_nameを書き換えたいんですが、コマンドがうまく動きません
https://github.com/Unity-Technologies/FPSSample/blob/master/Assets/Prefabs/Cameras/ServerCameraSpot.prefab#L51
作りかけのコマンド
git grep -n c5b2e3eb25e32904fa18c5ae09b782d9-- '*.prefab' | cut -f 1,2 -d ":" | awk -F ":" '{print $1 ":"($2 + 1)}' | sed -n $2p
適当にsedでm_nameを置換指定してしまうと、guidがc5b2e3eb25e32904fa18c5ae09b782d9以外のものまで置換してしまうので、
最初のgit grepでファイル名と行番号他を取得し、次のcutでファイル名と行番号だけにして、awkで行番号+1して、ファイル名と+1した行番号を元に、
ファイル名と行番号を指定したsed -eをしたいんですがprintしたものがうまく最後のsedに渡ってきません
601デフォルトの名無しさん
2022/02/03(木) 16:11:17.44ID:709dXRKt602デフォルトの名無しさん
2022/02/03(木) 16:30:52.62ID:vAyV6XNb 処理時間気にしないなら
|while IFS=: name line etc; do sed -e "$((line+1)) s///" $name; done
とかで良くない?
|while IFS=: name line etc; do sed -e "$((line+1)) s///" $name; done
とかで良くない?
603デフォルトの名無しさん
2022/02/03(木) 20:04:28.20ID:Vl/Cta+D604デフォルトの名無しさん
2022/02/03(木) 20:05:59.05ID:Vl/Cta+D まあ別にawkにこだわらなくてもperlとかでもいいけどさ
605デフォルトの名無しさん
2022/02/04(金) 00:19:45.01ID:ZnGIs6if >>600
perl 使ってこんな風にするとか。
perl -pe 'if($f){s/m_Name:/置換したい文字列/}$f=/guid: c5b2e3eb25e32904fa18c5ae09b782d9/' 読むファイル >書くファイル
少なくとも一つ前の行の状態を今読んだ行の処理をする時に分かっていないとできない。
読む方法を行単位にしないのであればその限りではないが。
perl 使ってこんな風にするとか。
perl -pe 'if($f){s/m_Name:/置換したい文字列/}$f=/guid: c5b2e3eb25e32904fa18c5ae09b782d9/' 読むファイル >書くファイル
少なくとも一つ前の行の状態を今読んだ行の処理をする時に分かっていないとできない。
読む方法を行単位にしないのであればその限りではないが。
606デフォルトの名無しさん
2022/02/04(金) 00:34:59.66ID:dkixXFTm perl おじはスレタイ読んで
607デフォルトの名無しさん
2022/02/04(金) 00:45:37.37ID:ZnGIs6if もう一つ awk, sed, xargs の組み合わせでやるやつを考えたが書き込もうとするとエラーになって書けない。
要約を書くと
grep で行番号付きで出力 | awk でコロン区切りで読んで $1 をカンマ区切りで連結した文字列を作った後でその後ろに "s/m_Name:/xxxxx/" の文字列を付けて出力 | xargs で入力はsedスクリプトになるようにしてsedが読むファイルは最初にgrepで指定したファイルと同じにする。
要約を書くと
grep で行番号付きで出力 | awk でコロン区切りで読んで $1 をカンマ区切りで連結した文字列を作った後でその後ろに "s/m_Name:/xxxxx/" の文字列を付けて出力 | xargs で入力はsedスクリプトになるようにしてsedが読むファイルは最初にgrepで指定したファイルと同じにする。
608デフォルトの名無しさん
2022/02/04(金) 00:48:16.47ID:u6SyGW4o unity yamlをparseするほうが堅い
609デフォルトの名無しさん
2022/02/04(金) 00:59:39.90ID:gwUGsBJ+ >>606
シェルスクリプトでperlワンライナーはごく普通
シェルスクリプトでperlワンライナーはごく普通
610デフォルトの名無しさん
2022/02/04(金) 01:03:24.21ID:r4soLYsS そんなこといったら
pythonだってシェル使ってワンライナーやろうと思えばできるじゃん
pythonだってシェル使ってワンライナーやろうと思えばできるじゃん
611デフォルトの名無しさん
2022/02/04(金) 01:16:35.08ID:53s+UEIz せっかくのシェルスクリプトで
ワンライナーにこだわるやつはバカだろ
ワンライナーにこだわるやつはバカだろ
612デフォルトの名無しさん
2022/02/04(金) 01:25:44.27ID:53s+UEIz >>600
なにをどう変えたいのか知らん(読むの面倒)けどこうすればいいだけ
自分でパズル(ワンライナー)問題を作ろうとするな
cat prefab | awk '
/guid: c5b2e3eb25e32904fa18c5ae09b782d9/ {
print
getline
print $0 "new"
next
}
{ print }
'
なにをどう変えたいのか知らん(読むの面倒)けどこうすればいいだけ
自分でパズル(ワンライナー)問題を作ろうとするな
cat prefab | awk '
/guid: c5b2e3eb25e32904fa18c5ae09b782d9/ {
getline
print $0 "new"
next
}
{ print }
'
613デフォルトの名無しさん
2022/02/04(金) 01:54:33.36ID:s9suXC4h >>612
それくらいならSedのが!w
それくらいならSedのが!w
614デフォルトの名無しさん
2022/02/04(金) 02:08:49.30ID:CBYs6kse awk -v "var=`grep -A 1 'guid: c5b' source.prefab | sed -n '2p'`" '{ sub(var, "hello, world!"); print }' source.prefab > after.prefab
615デフォルトの名無しさん
2022/02/04(金) 05:17:13.50ID:QBYNvY3/616デフォルトの名無しさん
2022/02/04(金) 05:38:41.45ID:53s+UEIz617デフォルトの名無しさん
2022/02/04(金) 05:40:08.51ID:53s+UEIz 一ヶ月後、一年後、
読み返してすぐに理解できるのはどっち?って話だよ
読み返してすぐに理解できるのはどっち?って話だよ
618デフォルトの名無しさん
2022/02/04(金) 06:02:38.15ID:o4wrdq2F 可読性w
619デフォルトの名無しさん
2022/02/04(金) 06:25:31.28ID:0Gk4FggV 可読性という言葉はキミの頭の悪さの免罪符ではないですよ?
620デフォルトの名無しさん
2022/02/04(金) 06:46:32.31ID:Nf7lGIz+ ああ、awkを知らないのねw
勉強したほうがいいよ?
勉強したほうがいいよ?
621デフォルトの名無しさん
2022/02/04(金) 09:33:54.99ID:tCsz8H1O sedやawkつかうならperlつかうな
シェルスクリプトなんだから、判定等はそちらに任せて
あくまで置換等の処理限定で
シェルスクリプトなんだから、判定等はそちらに任せて
あくまで置換等の処理限定で
622デフォルトの名無しさん
2022/02/04(金) 09:38:44.39ID:P0nM2TP/ perl にこだわるガイジなんなんw
623デフォルトの名無しさん
2022/02/04(金) 09:56:25.32ID:mTUPlCRU >>600
sedの-zオプション使って複数行まとめて置換すれば?
sed -Ez 's/(guid: c5b2e3eb25e32904fa18c5ae09b782d9[^¥n]*¥n m_Name: )¥n/¥1FOOBAR!!¥n/g' ServerCameraSpot.prefab
sedの-zオプション使って複数行まとめて置換すれば?
sed -Ez 's/(guid: c5b2e3eb25e32904fa18c5ae09b782d9[^¥n]*¥n m_Name: )¥n/¥1FOOBAR!!¥n/g' ServerCameraSpot.prefab
624デフォルトの名無しさん
2022/02/04(金) 09:57:49.27ID:tCsz8H1O 柔軟性のないsedや、ハードル高めのawkよりいいべ
シェルスクリプトができる環境ならだいたいperlは入ってるし
シェルスクリプトができる環境ならだいたいperlは入ってるし
625デフォルトの名無しさん
2022/02/04(金) 10:32:37.85ID:bISwOsTB 条件の行と処理したい行が分かれてる時点で単純なフィルタじゃ無理だからでしょ
awkなりperlなりで状態遷移は必須
むしろsedでできるなら教えてほしい
awkなりperlなりで状態遷移は必須
むしろsedでできるなら教えてほしい
626デフォルトの名無しさん
2022/02/04(金) 11:08:46.57ID:o3KyLJ6X sedで簡単にできとるやんw
627デフォルトの名無しさん
2022/02/04(金) 11:10:04.73ID:+I1ORxpE たくさんのレスありがとうございます、試してみます
628デフォルトの名無しさん
2022/02/04(金) 11:26:16.31ID:NXJAfnlz あっさりワンライナーで書かれたもんだから激おこですな
629デフォルトの名無しさん
2022/02/04(金) 11:42:01.63ID:Nf7lGIz+ ここまで回答が出るのに時間がかかってるのに
あっさりとは言わないw
あっさりとは言わないw
630デフォルトの名無しさん
2022/02/04(金) 11:52:54.93ID:6M3IyixH あっさりでしょ
631デフォルトの名無しさん
2022/02/04(金) 11:56:56.61ID:dkixXFTm こってりがいいな
632デフォルトの名無しさん
2022/02/04(金) 12:20:56.16ID:bISwOsTB やっぱりsedなんだよな
世界一使えるツールやわ
世界一使えるツールやわ
633デフォルトの名無しさん
2022/02/04(金) 12:54:29.42ID:mTUPlCRU ワンショットならsedで十分なのかもしれないけど
同じタスクがまた発生しそうならunity yaml用のツール作っておくほうがいいと思う
from unityparser import UnityDocument
doc = UnityDocument.load_yaml(‘ServerCameraSpot.prefab’)
entry = doc.get(class_name='MonoBehaviour', attributes=('m_Script',))
for k, v in entry.m_Script.items():
if k == 'guid' and v == 'c5b2e3eb25e32904fa18c5ae09b782d9':
entry.m_Name = "FOOBAR!!!"
doc.dump_yaml()
同じタスクがまた発生しそうならunity yaml用のツール作っておくほうがいいと思う
from unityparser import UnityDocument
doc = UnityDocument.load_yaml(‘ServerCameraSpot.prefab’)
entry = doc.get(class_name='MonoBehaviour', attributes=('m_Script',))
for k, v in entry.m_Script.items():
if k == 'guid' and v == 'c5b2e3eb25e32904fa18c5ae09b782d9':
entry.m_Name = "FOOBAR!!!"
doc.dump_yaml()
634デフォルトの名無しさん
2022/02/04(金) 12:58:11.93ID:NMPx/TbP >>612
そんなのただのawkのベタ書きじゃねーか
ベタ餓鬼するなら断然perlのほうがいいよね
cat ServerCameraSpot.prefab | perl -ne '
if (/guid: c5b2e3eb25e32904fa18c5ae09b782d9/) {
chomp($a=<>);
print "$_$a new\n";
} else {
print
}'
perl最強!
そんなのただのawkのベタ書きじゃねーか
ベタ餓鬼するなら断然perlのほうがいいよね
cat ServerCameraSpot.prefab | perl -ne '
if (/guid: c5b2e3eb25e32904fa18c5ae09b782d9/) {
chomp($a=<>);
print "$_$a new\n";
} else {
}'
perl最強!
635デフォルトの名無しさん
2022/02/04(金) 13:10:35.72ID:oFNeucHW sed -e '/guid/,/^/s/m_name/xxx/'
636デフォルトの名無しさん
2022/02/04(金) 13:17:33.47ID:vr7VXdSJ >>623
あの、これ動作してないように思うんですけど‥
あの、これ動作してないように思うんですけど‥
637デフォルトの名無しさん
2022/02/04(金) 13:51:48.01ID:mKMsSnzj Ruby のyaml を使ったら、最初のPrefab 部分しか取れなかった。
行頭に、--- があって、複数の文書として扱われるからかな?
require 'yaml'
data = YAML.load_file( "ServerCameraSpot.prefab" )
p data
出力
{"Prefab"=>{"m_ObjectHideFlags"=>1,
"serializedVersion"=>2,
続く
行頭に、--- があって、複数の文書として扱われるからかな?
require 'yaml'
data = YAML.load_file( "ServerCameraSpot.prefab" )
p data
出力
{"Prefab"=>{"m_ObjectHideFlags"=>1,
"serializedVersion"=>2,
続く
638デフォルトの名無しさん
2022/02/04(金) 14:07:57.65ID:mTUPlCRU >>636
gnu sed 4.8で動いてる
gnu sed 4.8で動いてる
639637
2022/02/04(金) 14:34:10.41ID:mKMsSnzj Ruby のyaml で、load_stream で複数文書を読めるらしいが、
14行目の、--- !u!1 &1459795647327810 で、エラーになる
found undefined tag handle while parsing a node at line 14 column 5 (Psych::SyntaxError)
require 'yaml'
File.open "ServerCameraSpot.prefab" do |io|
p docs = YAML.load_stream( io )
end
14行目の、--- !u!1 &1459795647327810 で、エラーになる
found undefined tag handle while parsing a node at line 14 column 5 (Psych::SyntaxError)
require 'yaml'
File.open "ServerCameraSpot.prefab" do |io|
p docs = YAML.load_stream( io )
end
640デフォルトの名無しさん
2022/02/04(金) 14:43:47.14ID:u7GqER63641637
2022/02/04(金) 17:49:45.92ID:mKMsSnzj Unity は、UnityYAML と呼ばれる、独自に最適化された、YAML ライブラリを使用します。
UnityYAML ライブラリは、完全な YAML 仕様をサポートしません
--- で始まる行を、--- に置換すると、Ruby のYAMLでも動いた
require 'yaml'
# 行末の改行を削除して、1行ずつ処理する。accum は蓄積変数
input_yaml = File.foreach( "ServerCameraSpot.prefab", chomp: true ).with_object( String.new( ) ) do |line, accum|
line = "---" if line.start_with?( "---" )
accum.concat( line, "\n" )
end
docs = YAML.load_stream( input_yaml ) # 複数文書
p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
UnityYAML ライブラリは、完全な YAML 仕様をサポートしません
--- で始まる行を、--- に置換すると、Ruby のYAMLでも動いた
require 'yaml'
# 行末の改行を削除して、1行ずつ処理する。accum は蓄積変数
input_yaml = File.foreach( "ServerCameraSpot.prefab", chomp: true ).with_object( String.new( ) ) do |line, accum|
line = "---" if line.start_with?( "---" )
accum.concat( line, "\n" )
end
docs = YAML.load_stream( input_yaml ) # 複数文書
p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
642637
2022/02/05(土) 12:59:45.97ID:Wxa6LWM/ >>641
の最後の行を、コメントにして、
# p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
その後ろに、下の2行を付け加えると、内容を変更して出力できる。
docs[ 3 ][ "MonoBehaviour" ][ "m_Name" ] = "あいう" # 変更
puts YAML.dump_stream( *docs ) # 複数文書
ただし最初の、% で始まる、2行のディレクティブが出力されない。
それと、複数文書の区切りが、--- となる
--- !u!1001 &100100000
みたいな、Unity の型を、Ruby では解釈できない
UnityのYAMLは正規形じゃないから、普通のパーサーで解釈するのは、骨が折れる
の最後の行を、コメントにして、
# p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
その後ろに、下の2行を付け加えると、内容を変更して出力できる。
docs[ 3 ][ "MonoBehaviour" ][ "m_Name" ] = "あいう" # 変更
puts YAML.dump_stream( *docs ) # 複数文書
ただし最初の、% で始まる、2行のディレクティブが出力されない。
それと、複数文書の区切りが、--- となる
--- !u!1001 &100100000
みたいな、Unity の型を、Ruby では解釈できない
UnityのYAMLは正規形じゃないから、普通のパーサーで解釈するのは、骨が折れる
643デフォルトの名無しさん
2022/03/01(火) 06:59:09.07ID:/KEw0dOm timeコマンドみたいな感じで、あるプロセスとその子プロセスが読み書きした
ファイルのデータ量を簡単に調べる方法ないですかね?
Linux板に書き込めなかったのでここで
ファイルのデータ量を簡単に調べる方法ないですかね?
Linux板に書き込めなかったのでここで
644デフォルトの名無しさん
2022/03/01(火) 07:24:58.47ID:2BqTSfQO 俺が知らないだけかもしれんが、コマンドとしてはないんじゃないかな?
mmapのメモリコピーによる書き出しの捕捉はカーネル空間じゃないと無理だろうし
比較的簡易的なのはstraceだけど、mmapのは漏らす
面倒なのでstapとか思いつく
mmapのメモリコピーによる書き出しの捕捉はカーネル空間じゃないと無理だろうし
比較的簡易的なのはstraceだけど、mmapのは漏らす
面倒なのでstapとか思いつく
645デフォルトの名無しさん
2022/03/01(火) 07:49:43.09ID:/KEw0dOm でもiostatとかで書き込み量わかるじゃん?
646デフォルトの名無しさん
2022/03/01(火) 07:49:59.81ID:/KEw0dOm リアルタイムなら
647デフォルトの名無しさん
2022/03/01(火) 21:44:05.39ID:84NGcGuL Linux 板は、荒らし退治がすごい
もう何か月も書けない。まだ、何年も続きそう
もう何か月も書けない。まだ、何年も続きそう
648デフォルトの名無しさん
2022/03/01(火) 21:55:02.49ID:84NGcGuL 「linux メモリ使用量 プロセス 監視」などで、検索すれば?
Zabbix などに、そういう項目は無いのか?
Zabbix などに、そういう項目は無いのか?
649デフォルトの名無しさん
2022/03/02(水) 06:37:00.21ID:ZAk/CGpZ >>648
そのコマンドって一瞬で実行が終わるんですよね
そのコマンドって一瞬で実行が終わるんですよね
650デフォルトの名無しさん
2022/03/04(金) 16:44:51.36ID:ooZxW1Kt >>645
/proc/$pid/io は?
/proc/$pid/io は?
651デフォルトの名無しさん
2022/03/23(水) 04:36:10.53ID:SaPfQQES ちんちんシュッ!シュッ!シュッ!
652デフォルトの名無しさん
2022/03/23(水) 12:28:20.41ID:ETZJHb21 sh!sh!
653デフォルトの名無しさん
2022/03/25(金) 23:16:30.56ID:ztMhdJXY 久しぶりにこのスレ来たけどPOSIX云々言ってた人消えたんだな
一気に過疎ったな
一気に過疎ったな
654デフォルトの名無しさん
2022/03/25(金) 23:41:47.44ID:gyoQnKSX そりゃま過疎らせるためにやってたんだし
655デフォルトの名無しさん
2022/03/26(土) 00:16:03.42ID:zwuOpZDB perlジジイとかワンライナー大嫌いマンとか
656デフォルトの名無しさん
2022/03/26(土) 04:10:35.39ID:fJwm7Jgq 一時期は数ヶ月で1スレ消火するぐらいの勢いがあったのに。つわものどもが夢の跡
657デフォルトの名無しさん
2022/03/29(火) 02:20:12.64ID:6KgrCIX2 今度はTwitterで騒いでるよw
658デフォルトの名無しさん
2022/03/29(火) 09:16:04.55ID:3XcWZYBt 見てきたけど酷いな。よくシェルショッカーなんて相手にするよ
リッチー大佐も冷静を装ってるが完全に脅迫になってるのわかってないのかな
リッチー大佐も冷静を装ってるが完全に脅迫になってるのわかってないのかな
659デフォルトの名無しさん
2022/04/05(火) 14:11:34.15ID:dKCEu0lS BourneがALGOL策定に関わってたからfiとかesacになった、odは名前被りで免れたという小噺は聞いたことあったが、ここまで染まりきってたとは思わなかった
さすがにソース内までは免れきってない、あとPOOLってなんだよ…
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
さすがにソース内までは免れきってない、あとPOOLってなんだよ…
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
660デフォルトの名無しさん
2022/04/05(火) 15:31:19.76ID:0XOZrJsf 昔は、マクロでCを他の言語っぽく書けるようにする、つー流派?があったからなあ。w
begin/endを定義してPascalっぽくとか。
begin/endを定義してPascalっぽくとか。
661デフォルトの名無しさん
2022/04/05(火) 23:33:41.59ID:evtsrebn662デフォルトの名無しさん
2022/04/05(火) 23:34:11.57ID:evtsrebn >>660
COBOLっぽくしてるのを見たことがあるな
COBOLっぽくしてるのを見たことがあるな
663デフォルトの名無しさん
2022/04/06(水) 16:06:26.14ID:S7CGIPqQ doが対称性を崩してるよな
キーワード …; do
…
done
FOR-ROF
LOOP-POOL
WHILE-ELIHW
美しい対称性
キーワード …; do
…
done
FOR-ROF
LOOP-POOL
WHILE-ELIHW
美しい対称性
664デフォルトの名無しさん
2022/04/07(木) 16:39:39.21ID:pi20fczf xargs コマンドの -P オプションに、3時間ぐらい前に気付いた。
665デフォルトの名無しさん
2022/04/11(月) 13:29:24.85ID:KjtEvxV7 >>659
#define POOL }
これやったことあるわ…
cの式とbrainf**kの命令は一対一対応してるので、main()内にそのまま展開すればbfトランスパイラになる
これそのままで動く
https://en.m.wikipedia.org/wiki/Brainfuck
brainfuck command C equivalent
(Program Start) char array[30000] = {0}; char *ptr = array;
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }
大体合法なCトークンじゃないので、一度BRAに置き換えてsedで置換する必要はあったけど
#define POOL }
これやったことあるわ…
cの式とbrainf**kの命令は一対一対応してるので、main()内にそのまま展開すればbfトランスパイラになる
これそのままで動く
https://en.m.wikipedia.org/wiki/Brainfuck
brainfuck command C equivalent
(Program Start) char array[30000] = {0}; char *ptr = array;
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }
大体合法なCトークンじゃないので、一度BRAに置き換えてsedで置換する必要はあったけど
666デフォルトの名無しさん
2022/04/15(金) 15:18:31.03ID:LoHMCFtw bashの
[[ -a ${TMP_FILE} ]] && rm -f ${TMP_FILE}
って-aとか[[ ]] &&とかそれぞれどういう意味なの?
TMP_FILEがあったら消すってことなんだろうけど
[[ -a ${TMP_FILE} ]] && rm -f ${TMP_FILE}
って-aとか[[ ]] &&とかそれぞれどういう意味なの?
TMP_FILEがあったら消すってことなんだろうけど
667デフォルトの名無しさん
2022/04/15(金) 16:01:54.46ID:hbtBlxLh -aはファイルが存在すれば真になるという古い書き方
ANDの意味の-aと間違いやすいから-eを使え
&&は普通にANDだろ
ANDの意味の-aと間違いやすいから-eを使え
&&は普通にANDだろ
668デフォルトの名無しさん
2022/04/15(金) 16:05:53.77ID:LoHMCFtw >>667
古い書き方なのねandの-aと紛らわしいな
古い書き方なのねandの-aと紛らわしいな
669デフォルトの名無しさん
2022/04/15(金) 19:25:44.34ID:b3yZs9Hw man bash
670デフォルトの名無しさん
2022/04/16(土) 09:12:23.33ID:AbnHWb9H 短絡評価。真、偽の順で表示される
and の場合は、左辺が偽なら、右辺を評価せずに、偽が確定する。
or の場合は、左辺が真なら、右辺を評価せずに、真が確定する
[ a = a ] && echo 真
[ a = b ] && echo 表示されない
[ a = a ] || echo 表示されない
[ a = b ] || echo 偽
and の場合は、左辺が偽なら、右辺を評価せずに、偽が確定する。
or の場合は、左辺が真なら、右辺を評価せずに、真が確定する
[ a = a ] && echo 真
[ a = b ] && echo 表示されない
[ a = a ] || echo 表示されない
[ a = b ] || echo 偽
671デフォルトの名無しさん
2022/04/18(月) 16:18:56.11ID:GGXXVNot bashは構文を拡張しすぎたせいで、変なのを書くやつが増産されてしまった。
672デフォルトの名無しさん
2022/04/18(月) 16:20:19.34ID:GGXXVNot >>668
[]がコマンドであることを認識した方がいい
[]がコマンドであることを認識した方がいい
673デフォルトの名無しさん
2022/04/18(月) 17:06:06.95ID:CQwGdbgT >>671
変なのって?
変なのって?
674デフォルトの名無しさん
2022/04/18(月) 18:56:00.27ID:IfcMEIPj >>672
testコマンドってこと?
testコマンドってこと?
675デフォルトの名無しさん
2022/04/20(水) 11:54:29.01ID:e4Ywa9g+ 昔は [ が test にシンボリックリンクされていたものぢゃ
676デフォルトの名無しさん
2022/04/20(水) 17:00:20.67ID:SrakFfBy ファイルの先頭と末尾だけを表示させたくて
$ (head;tail) < tmp
みたいなことをしててふとハマったんだけど、
$ for i in {00..60};do echo "22-04-20 00:$i"; done > tmp
$ (head;tail) < <(grep 22-04-20 tmp)
だと head 分しか表示されなかった
多分シグナルとかの関係だろう、と思ってるんだけどイケてる回避策ってあるかな?
まあなければ愚直にファイルに書き出すだけなんだけども
$ (head;tail) < tmp
みたいなことをしててふとハマったんだけど、
$ for i in {00..60};do echo "22-04-20 00:$i"; done > tmp
$ (head;tail) < <(grep 22-04-20 tmp)
だと head 分しか表示されなかった
多分シグナルとかの関係だろう、と思ってるんだけどイケてる回避策ってあるかな?
まあなければ愚直にファイルに書き出すだけなんだけども
677デフォルトの名無しさん
2022/04/20(水) 17:17:12.72ID:65nfU3ze たぶんheadが複数行まとめて読み込んで行数とか判断してるんだと思う
回避策はないかな
stdinから読み込む挙動を変えるオプションも無さそうだし
回避策はないかな
stdinから読み込む挙動を変えるオプションも無さそうだし
678デフォルトの名無しさん
2022/04/20(水) 18:43:04.89ID:z0poUMkB (sed -u 10q;tail) < <(grep 22-04-20 tmp)
679デフォルトの名無しさん
2022/04/21(木) 12:40:10.24ID:yp5x7VDG せやったら全部Sedだけでええやろ!w
と思ったけど、なるほど、むつかしいんやな。。。
末尾複数行を簡単につまめないんやった。
$(($(wc ...)-N))を埋め込んだらできるけど、それもなー。
と思ったけど、なるほど、むつかしいんやな。。。
末尾複数行を簡単につまめないんやった。
$(($(wc ...)-N))を埋め込んだらできるけど、それもなー。
680デフォルトの名無しさん
2022/04/21(木) 12:49:57.95ID:zIIL/8l3 どうでもいいけど22-04-20 00:60ってなによ
681デフォルトの名無しさん
2022/04/21(木) 13:00:42.66ID:kU09vtpu そりゃまあ20年4月22日のことやろ
682デフォルトの名無しさん
2022/04/21(木) 14:22:25.48ID:zIIL/8l3 年月日ではなく時分のところ
683デフォルトの名無しさん
2022/04/21(木) 17:47:43.38ID:ADsYJBoB684デフォルトの名無しさん
2022/04/21(木) 21:22:45.77ID:+ZjRtsOn readでcsvのヘッダを読んで、本体だけが次のパイプに渡って処理され、最後にcatで再結合する技は見たことある
つまり、head じゃなくて10行readならいけるんでないか?
つまり、head じゃなくて10行readならいけるんでないか?
685デフォルトの名無しさん
2022/04/21(木) 21:39:19.32ID:KpiRnbrU686684
2022/04/21(木) 22:14:40.59ID:+ZjRtsOn >>685
検索力に惚れるわ
俺は過去ログ取得に不快な広告見せられたのでコピペっておく
231 名無しさん@お腹いっぱい。 sage 2017/06/14(水) 11:09:43.34 .net
head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
そうそうこんなん書いてたわ、例の通りdf -hやtsv/csvのヘッダ一時退避に重宝するイディオム
しかし-nは覚えてるけど行数オプションとかあったかな?
whileで包んで10回数えるのも多分行けるとは思うが、まあ最悪
read line; read line;…
なら通るでしょう()
検索力に惚れるわ
俺は過去ログ取得に不快な広告見せられたのでコピペっておく
231 名無しさん@お腹いっぱい。 sage 2017/06/14(水) 11:09:43.34 .net
head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
そうそうこんなん書いてたわ、例の通りdf -hやtsv/csvのヘッダ一時退避に重宝するイディオム
しかし-nは覚えてるけど行数オプションとかあったかな?
whileで包んで10回数えるのも多分行けるとは思うが、まあ最悪
read line; read line;…
なら通るでしょう()
687デフォルトの名無しさん
2022/04/21(木) 22:29:49.14ID:Q2Q995JA { for _ in {1..10};do read l; echo "$l"; done; tail; } < <(grep 22-04-20 tmp)
688デフォルトの名無しさん
2022/04/21(木) 22:37:33.49ID:Q2Q995JA grep 22-04-20 tmp | tee >(head) >(tail) >/dev/null
689デフォルトの名無しさん
2022/04/22(金) 01:40:46.85ID:p9VEf+/q lsの日時の書式をyyyy/mm/dd hh:mm:ss固定にしたいのですがどっかに設定あるんでしょうか
690デフォルトの名無しさん
2022/04/22(金) 02:32:55.95ID:SxzvmxoM >>688
これ動くような気もするけど、エッジケースの詰め合わせみたいで関心するわ…ぜひ明日試したい
teeはプロセス置換への分配を均等に進めるのか?
head/tail でなければ入力も出力も数ブロックのバッファ単位で入り交じるはずだけど、バッファ単位に収まる10行のhead/tailの出力は一塊で吐かれるはず、つまりhead→tail/tail->headのいずれか
先頭だけ舐めるheadの方がtailより先に処理を終えるからhead->tail、の出力になるのだろうか?
これ動くような気もするけど、エッジケースの詰め合わせみたいで関心するわ…ぜひ明日試したい
teeはプロセス置換への分配を均等に進めるのか?
head/tail でなければ入力も出力も数ブロックのバッファ単位で入り交じるはずだけど、バッファ単位に収まる10行のhead/tailの出力は一塊で吐かれるはず、つまりhead→tail/tail->headのいずれか
先頭だけ舐めるheadの方がtailより先に処理を終えるからhead->tail、の出力になるのだろうか?
691デフォルトの名無しさん
2022/04/22(金) 02:54:12.16ID:AtJxm6z2 tee, head, tailの実装とバッファリングモード、入力データの素性の全てに依存してそうなヤバさ
692デフォルトの名無しさん
2022/04/22(金) 03:06:07.22ID:xNmupzsw とりあえず手元のandroidとかいう玩具で
GNU bash, version 5.1.8(1)-release (aarch64-unknown-linux-android)
$ seq 100 | tee >(head) >(tail) >/dev/null
91
92
93
94
95
96
97
98
99
100
1
2
3
4
5
6
7
8
9
10
GNU bash, version 5.1.8(1)-release (aarch64-unknown-linux-android)
$ seq 100 | tee >(head) >(tail) >/dev/null
91
92
93
94
95
96
97
98
99
100
1
2
3
4
5
6
7
8
9
10
693デフォルトの名無しさん
2022/04/22(金) 03:07:10.32ID:xNmupzsw あとコマンドはgnuの
694デフォルトの名無しさん
2022/04/22(金) 03:15:13.30ID:fjQN0Ax7 seq 100000にしたらheadが勝ったわw
695デフォルトの名無しさん
2022/04/22(金) 03:34:30.65ID:SxzvmxoM 入力が小さいときに限っては、teeも実質引数に一回渡したきりだからheadの速さも関係ないんだろうね
seqの引数を二分していけば均衡して、結果はランダムになりそう
seqの引数を二分していけば均衡して、結果はランダムになりそう
696デフォルトの名無しさん
2022/04/22(金) 05:38:09.18ID:rkPZZrpS awk -v N=10 '{ if (NR <= N) print $0; buf[NR % N] = $0 } END { for (i = (NR - N + 1 > N + 1 ? NR - N + 1 : N + 1); i <= NR; i++) print buf[i % N] }'
697デフォルトの名無しさん
2022/04/22(金) 09:43:04.69ID:9We3r0d8698デフォルトの名無しさん
2022/04/22(金) 11:42:06.75ID:bWbp9a44 seq 100 | pee head tail
peeでだめなん?
peeでだめなん?
699デフォルトの名無しさん
2022/04/22(金) 11:52:54.17ID:IqSZbuIe700デフォルトの名無しさん
2022/04/22(金) 12:15:37.42ID:IW9biBQV >>697
そもそもgrepが律速なんだから効率とか野暮だけど、あえて言うなら
元のファイルがダンプしてしまえるならストレージは食うが終端にシークしてしまうのが最速だし、ストリーム処理なら初めの10行プリントする自明な処理の後、10行のバッファを保持して終端が見えるまでひたすら読みまくるしかアルゴリズムはないわけで
それはsed N;N;...でもなんでもいいが、timeするまでもなく10行保持して読み捨て専用マシーンとしてガリガリチューンされてるtailを使うのが最速に決まっとるがな
そもそもgrepが律速なんだから効率とか野暮だけど、あえて言うなら
元のファイルがダンプしてしまえるならストレージは食うが終端にシークしてしまうのが最速だし、ストリーム処理なら初めの10行プリントする自明な処理の後、10行のバッファを保持して終端が見えるまでひたすら読みまくるしかアルゴリズムはないわけで
それはsed N;N;...でもなんでもいいが、timeするまでもなく10行保持して読み捨て専用マシーンとしてガリガリチューンされてるtailを使うのが最速に決まっとるがな
701デフォルトの名無しさん
2022/04/22(金) 12:22:41.13ID:IW9biBQV 変な流れになってるのは>>688という爆弾に完全に食われてしまったからな…
俺にも挙動が予測不能過ぎて興味が尽きない
俺にも挙動が予測不能過ぎて興味が尽きない
702デフォルトの名無しさん
2022/04/22(金) 12:37:37.28ID:QL3esWpR703デフォルトの名無しさん
2022/04/22(金) 12:45:37.78ID:SxzvmxoM 並スペックのx86-64Debian/bash5/coreutils環境で問題のを検証
>>692
うちではseq 100だとheadが勝った、なおheadとtailを交換しても同じ
10000(適当)でも大体同じ結果が出る、そもそも再現性あるの?と思って十回くらい再実行してたら
1 2 3 4 5 6 7 99991 9992 9993 9994 9995 9996 9997 9998 9999 10000 8 9 10
という入り交じるケースを発見したw
>>692
うちではseq 100だとheadが勝った、なおheadとtailを交換しても同じ
10000(適当)でも大体同じ結果が出る、そもそも再現性あるの?と思って十回くらい再実行してたら
1 2 3 4 5 6 7 99991 9992 9993 9994 9995 9996 9997 9998 9999 10000 8 9 10
という入り交じるケースを発見したw
704デフォルトの名無しさん
2022/04/22(金) 13:13:46.93ID:SxzvmxoM head or tailだけにコイントスってか(裏でも表でもないが)
https://i.imgur.com/uQBk3cx.jpg
https://i.imgur.com/uQBk3cx.jpg
705デフォルトの名無しさん
2022/04/22(金) 13:21:40.45ID:4sYij9Dr バックグラウンドの割り込み遅延やその時点での負荷が影響するだろうから、エントロピー源に出来るな
もっとも一様乱数に近付けるにはおま環固有の定数を探す必要はあるが
マウスグリグリで乱数吐く/dev/randomと原理的には同じもの
もっとも一様乱数に近付けるにはおま環固有の定数を探す必要はあるが
マウスグリグリで乱数吐く/dev/randomと原理的には同じもの
706デフォルトの名無しさん
2022/04/22(金) 13:48:09.59ID:MIuZAVWA そもそもteeから非同期に投げたプロセスが順序良く出力することを期待するのがおかしいわけで
何のコマンドでもいいが、それを暗喩する名前のheadとtailというチョイスがツボに嵌まって面白い
というか>>688は狙ってやってるだろ
pidやマウス座標とか拾って改善目指すとかは無粋
何のコマンドでもいいが、それを暗喩する名前のheadとtailというチョイスがツボに嵌まって面白い
というか>>688は狙ってやってるだろ
pidやマウス座標とか拾って改善目指すとかは無粋
707デフォルトの名無しさん
2022/04/22(金) 14:06:12.36ID:SxzvmxoM 字面とその挙動、足すことも引くことも躊躇われる簡潔さ
完成し尽くされてるよな
今スレのベストコマンド賞にノミネートしたい
完成し尽くされてるよな
今スレのベストコマンド賞にノミネートしたい
708デフォルトの名無しさん
2022/04/22(金) 14:37:33.47ID:E3Z2WeTR ユーモア部門なw
プロセス置換がposixで無いのだけが惜しいが、一番面白いワンライナーなのは間違いない
プロセス置換がposixで無いのだけが惜しいが、一番面白いワンライナーなのは間違いない
709デフォルトの名無しさん
2022/04/22(金) 17:37:52.50ID:QL3esWpR >>703
tailのほうにsleep 0.1でも入れとけば充分安定するな。
tailのほうにsleep 0.1でも入れとけば充分安定するな。
710デフォルトの名無しさん
2022/04/22(金) 17:51:31.59ID:XoRdeeG7 そこまでやるならもういっそ行番号振って最後にソートしろよ…
711デフォルトの名無しさん
2022/04/22(金) 17:55:41.86ID:Llc7G82k というか、気紛れさが可愛いという話なのに安定させてどうする
712デフォルトの名無しさん
2022/04/22(金) 19:07:59.33ID:t4x32peS もうとっくに解決してるので…
爆弾落としてった誰かが悪い
>>687でいいと思うが、あえて添削するとすれば、まずコマンド置換は不要
grep pat file | { for i in {1..10}; do read line; echo "$line"; done; tail; }
再利用したいならパラメトライズが面倒なブレース展開を避けるべき(パラメータ展開より先)
{1..10} -> $(seq $n)
もちろんwhileでカウントしてもいい、どちらの版も適当なファイルで取り敢えず動作確認済
爆弾落としてった誰かが悪い
>>687でいいと思うが、あえて添削するとすれば、まずコマンド置換は不要
grep pat file | { for i in {1..10}; do read line; echo "$line"; done; tail; }
再利用したいならパラメトライズが面倒なブレース展開を避けるべき(パラメータ展開より先)
{1..10} -> $(seq $n)
もちろんwhileでカウントしてもいい、どちらの版も適当なファイルで取り敢えず動作確認済
713デフォルトの名無しさん
2022/04/22(金) 19:10:33.14ID:t4x32peS まちがい
✗コマンド置換
↓
✔プロセス置換
です
✗コマンド置換
↓
✔プロセス置換
です
714デフォルトの名無しさん
2022/04/24(日) 09:09:54.95ID:tpsbRsIR 質問です
if [-z $cmwt ]の-zは何なん?
if [-z $cmwt ]の-zは何なん?
715デフォルトの名無しさん
2022/04/24(日) 09:26:53.94ID:R/F29R42 プーチン親衛隊
716デフォルトの名無しさん
2022/04/24(日) 10:21:41.54ID:TEfYtyVL $ man [
717デフォルトの名無しさん
2022/04/24(日) 10:30:43.78ID:tpsbRsIR718デフォルトの名無しさん
2022/04/24(日) 10:41:04.67ID:agfo7zfZ bash$ help test | grep -A1 -e '-z'
719デフォルトの名無しさん
2022/04/25(月) 23:07:17.30ID:OWEpx0GO720デフォルトの名無しさん
2022/04/26(火) 02:19:34.78ID:JTn9J471 UNIX シェルスクリプト・コマンドブック 第3版、山下哲典、2015
721デフォルトの名無しさん
2022/04/26(火) 09:41:05.59ID:abeO/U+d [ がコマンドで、ゆえに直後にスペースが必要
というのは初心者が見落としやすいところではある
というのは初心者が見落としやすいところではある
722デフォルトの名無しさん
2022/04/26(火) 12:36:05.16ID:60BzfgWB シェルスクリプトの基礎をすっとばして
いきなりコマンドの使いこなしから始めましょう
みたいなのは害悪だと思う
シェル芸から始めるんじゃなくて、シェルスクリプトを勉強すべき
いきなりコマンドの使いこなしから始めましょう
みたいなのは害悪だと思う
シェル芸から始めるんじゃなくて、シェルスクリプトを勉強すべき
723デフォルトの名無しさん
2022/04/26(火) 12:54:52.42ID:uKDaCZCW 言い出したら切りがないけどコンピューターの仕組みからやるべき
724デフォルトの名無しさん
2022/04/26(火) 14:33:11.23ID:QfJATbip もうシリコンの採掘からやれや!
725デフォルトの名無しさん
2022/04/26(火) 18:21:48.39ID:TDP9zkh+ 多結晶シリコンのインゴットは作ったことあるわ
726デフォルトの名無しさん
2022/04/26(火) 18:31:04.23ID:lyut1+Mp その辺の河原で拾った事ならあるな
727デフォルトの名無しさん
2022/04/26(火) 19:24:30.73ID:hbZUgTG0 金の採掘もやっとくか…
728デフォルトの名無しさん
2022/04/26(火) 19:31:31.14ID:9HhSqCwG 今年は天候不良で収穫量が少ないとか
729デフォルトの名無しさん
2022/04/26(火) 19:32:36.15ID:G+JzaZJD まずはマニュアルくらい一通り読まんとな
俺は座り無精なのでマニュアルだけ読んでマスターした気になってる言語の方が多いくらい()
俺は座り無精なのでマニュアルだけ読んでマスターした気になってる言語の方が多いくらい()
730デフォルトの名無しさん
2022/04/28(木) 23:43:17.98ID:a4NDWJu+ vimでshebangを自動で入力してくれる機能ありますか?
731デフォルトの名無しさん
2022/04/29(金) 00:29:58.42ID:lUnjMOza #!/usr/bin/env ruby
732デフォルトの名無しさん
2022/04/29(金) 00:34:04.74ID:gP3ffc3T スレ違いだと思うけどまあ一応
:autocmd BufNewFile *.sh [コマンド]
put='#! /path/to/sh'
多分dieとかgetoptとかtrap含めたテンプレを用意して日付とかファイル名とかお前の名前とか置換
r /path/to/tmpl.sh | s/__DATE__/\=strftime('%Y-%m-%d')/
未テスト
:autocmd BufNewFile *.sh [コマンド]
put='#! /path/to/sh'
多分dieとかgetoptとかtrap含めたテンプレを用意して日付とかファイル名とかお前の名前とか置換
r /path/to/tmpl.sh | s/__DATE__/\=strftime('%Y-%m-%d')/
未テスト
733デフォルトの名無しさん
2022/04/29(金) 00:49:51.62ID:iZ0Puaoh >>732
ありがとうございます、:autcmdですか
ありがとうございます、:autcmdですか
734デフォルトの名無しさん
2022/06/21(火) 19:32:07.61ID:0jGPid+s スペースを含む複数のファイル名を一括でリネームしたいんですが、上手い方法はありますか?
スペース無しならfind+sed+xargsで行けるのですが
スペース無しならfind+sed+xargsで行けるのですが
735デフォルトの名無しさん
2022/06/21(火) 20:31:37.09ID:q62JFBwI \x20で行けたりしないかな
736デフォルトの名無しさん
2022/06/21(火) 20:45:32.09ID:eKSiaONm findのオプションでprint0とかしたらいけないんだっけ?
737デフォルトの名無しさん
2022/06/21(火) 21:06:17.83ID:EjbRTWsP738デフォルトの名無しさん
2022/06/21(火) 21:13:42.89ID:EjbRTWsP それからあとはどんなリネームをしたいのかを書くこと
739デフォルトの名無しさん
2022/06/22(水) 19:28:36.54ID:EcTc17L7 Ruby で作ってみた
ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する。
ただし、DryRun なので実際には変更されません。
ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラーとする
require 'fileutils'
require 'set'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# そのディレクトリ内の全てのファイル名だけを抜き出す
old_filenames = Dir.glob( glob_pattern ).map { |full_path| File.basename( full_path ) }
old_filenames_set = Set.new( old_filenames ) # エラー処理用に、set にも入れる
# ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する
new_filenames = old_filenames.map do |filename|
new_fn = filename.tr( " ", "_" )
# ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラー!
if new_fn != filename
raise "ファイル名 #{ filename } が重複します!" if old_filenames_set.include?( new_fn )
end
new_fn
end
次へ続く
ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する。
ただし、DryRun なので実際には変更されません。
ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラーとする
require 'fileutils'
require 'set'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# そのディレクトリ内の全てのファイル名だけを抜き出す
old_filenames = Dir.glob( glob_pattern ).map { |full_path| File.basename( full_path ) }
old_filenames_set = Set.new( old_filenames ) # エラー処理用に、set にも入れる
# ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する
new_filenames = old_filenames.map do |filename|
new_fn = filename.tr( " ", "_" )
# ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラー!
if new_fn != filename
raise "ファイル名 #{ filename } が重複します!" if old_filenames_set.include?( new_fn )
end
new_fn
end
次へ続く
740739
2022/06/22(水) 19:29:18.14ID:EcTc17L7 前の続き
# ファイル名を変更する
old_filenames.zip( new_filenames ) do |old_filename, new_filename|
# 変換されなかったファイルは、処理しない
next if old_filename == new_filename
old_path = target_dir + "/" + old_filename
new_path = target_dir + "/" + new_filename
FileUtils::DryRun.move( old_path, new_path)
end
# ファイル名を変更する
old_filenames.zip( new_filenames ) do |old_filename, new_filename|
# 変換されなかったファイルは、処理しない
next if old_filename == new_filename
old_path = target_dir + "/" + old_filename
new_path = target_dir + "/" + new_filename
FileUtils::DryRun.move( old_path, new_path)
end
741デフォルトの名無しさん
2022/06/22(水) 21:31:19.80ID:r+zxbhox スペース含みの対処はレコード区切りを'\0'にすること
(普通だったら'\n'区切り)
find ... -print0 | sed -z 's/...//' | xargs -0 ...
renameが目的なら1レコードをsedで2レコードに分割して、
xargs -0 -n2 mv で受け取ることになるんじゃない?
パイプに流れてるものを見たけりゃxxdでも使えばいい
(普通だったら'\n'区切り)
find ... -print0 | sed -z 's/...//' | xargs -0 ...
renameが目的なら1レコードをsedで2レコードに分割して、
xargs -0 -n2 mv で受け取ることになるんじゃない?
パイプに流れてるものを見たけりゃxxdでも使えばいい
742デフォルトの名無しさん
2022/06/22(水) 23:59:58.34ID:qmaAVV4a なんだそれ
743デフォルトの名無しさん
2022/06/23(木) 00:51:47.61ID:p4V7vEeM >>734
どんなリネームかによるけど、renameコマンドは?
どんなリネームかによるけど、renameコマンドは?
744デフォルトの名無しさん
2022/06/24(金) 22:25:26.43ID:ah9fFKb9 for n in { 1 2 3 }
do
echo $n
done
ってバグ?
do
echo $n
done
ってバグ?
745デフォルトの名無しさん
2022/06/24(金) 22:30:30.37ID:wjFt6G0b 手元のshellで気に入らない動作でもしたのか?
誰かが書いたコードがおかしい話か?
誰かが書いたコードがおかしい話か?
746デフォルトの名無しさん
2022/06/24(金) 23:20:53.20ID:K5vj26OZ ループに{}も含めたいのならバグじゃないし
含めたくないならバグかもしれない
知らんがな
含めたくないならバグかもしれない
知らんがな
747デフォルトの名無しさん
2022/06/25(土) 00:54:30.97ID:3Gjf2Ej1 バグだったみたいです
748デフォルトの名無しさん
2022/06/25(土) 01:42:22.54ID:+sGuzAtV 波括弧って文法上意味を持つ(フォークしないグルーピング)から含まれないのは正しい挙動だろう
749デフォルトの名無しさん
2022/06/25(土) 10:28:24.73ID:zmRipdPc え?バグダッドが見たいだって?
750デフォルトの名無しさん
2022/06/25(土) 10:29:40.74ID:zmRipdPc >>748
波括弧はただの予約語やで
波括弧はただの予約語やで
751デフォルトの名無しさん
2022/06/25(土) 16:56:56.58ID:+sGuzAtV752デフォルトの名無しさん
2022/06/25(土) 19:46:30.70ID:zmRipdPc753デフォルトの名無しさん
2022/06/25(土) 19:49:57.18ID:zmRipdPc 予約語が特殊な意味を持つのは
コマンドの最初に使ったときだけ
わからんかねぇw
コマンドの最初に使ったときだけ
わからんかねぇw
754デフォルトの名無しさん
2022/06/25(土) 21:07:44.33ID:K9JamG/I えっ?
755デフォルトの名無しさん
2022/06/25(土) 21:39:41.82ID:RwCs863z man bashにも、{ }には注意しろ、て書いてあるくらいやからな。
756デフォルトの名無しさん
2022/06/26(日) 12:28:30.09ID:HMqwJiMU >>753
いかれてやがる
いかれてやがる
757デフォルトの名無しさん
2022/06/26(日) 19:26:23.55ID:7NgSBfAB お前が無知なだけやろw
{ } は文法上は特別な意味を持たない
{ } は文法上は特別な意味を持たない
758デフォルトの名無しさん
2022/06/27(月) 15:46:57.73ID:CskE0rDG 外出しの関数ファイルってどんな名前にしてる?
特に拡張子
特に拡張子
759デフォルトの名無しさん
2022/06/27(月) 16:49:42.17ID:qAroFeWq 関数が書いてあってsourceで読み込むファイル?
名前は何が聞きたいのか知らんけど拡張子は
POSIX準拠で作るときは.shで、bash用なら.bashかな
名前は何が聞きたいのか知らんけど拡張子は
POSIX準拠で作るときは.shで、bash用なら.bashかな
760デフォルトの名無しさん
2022/06/27(月) 18:23:34.81ID:CskE0rDG761デフォルトの名無しさん
2022/06/27(月) 20:23:09.07ID:qAroFeWq 変数だけ区別する必要ないやろ?
.shか.bash
.shか.bash
762デフォルトの名無しさん
2022/06/28(火) 01:11:34.56ID:Dv09yGDf コマンドとしては使えないスクリプトファイル、ということで、拡張子を別にしたい気持ちはわかる。
検索しやすくなるしな。
検索しやすくなるしな。
763デフォルトの名無しさん
2022/06/28(火) 05:39:12.64ID:L08FVbEp 関数しか書いてないやつはコマンドとして使えないんだから
それと同じでいいやん
それと同じでいいやん
764デフォルトの名無しさん
2022/06/28(火) 10:28:28.56ID:ucMrCo9H >>762
なるほどそういう考えか
なるほどそういう考えか
765デフォルトの名無しさん
2022/07/01(金) 00:50:47.17ID:oYJ8x66X 独自拡張子は嫌われる
766デフォルトの名無しさん
2022/07/02(土) 11:14:35.24ID:EoiiwDBr bashというかシェル全般について質問です
シェル内で変数定義(例えばTEST="test")して
Java(jar)プログラムを呼び出してその中で環境変数(TEST)を
取得すると値"test"が得られます
シェル内の変数とは環境変数と同義なのでしょうか?
単なるスコープの違いでしょうか?
シェル内で変数定義(例えばTEST="test")して
Java(jar)プログラムを呼び出してその中で環境変数(TEST)を
取得すると値"test"が得られます
シェル内の変数とは環境変数と同義なのでしょうか?
単なるスコープの違いでしょうか?
767デフォルトの名無しさん
2022/07/02(土) 12:12:57.61ID:UMJkSd0D どっかで export TEST されてるんじゃ
768デフォルトの名無しさん
2022/07/02(土) 15:06:57.46ID:EoiiwDBr >>767
語弊があったかもしれませんが
シェル内で変数定義とJavaプログラムの呼び出しをしています
具体的には以下のような感じです
・sample.bash
#!/bin/bash
TEST="test" # この変数が環境変数と同義?
/usr/bin/java -jar Sample.jar
exit 0
・Sample.jar (Sample.java)
public class Sample {
public static void main(String[] args) {
String str = System.getenv("TEST"); // 値"test"が取得可能
System.out.println(str);
}
}
語弊があったかもしれませんが
シェル内で変数定義とJavaプログラムの呼び出しをしています
具体的には以下のような感じです
・sample.bash
#!/bin/bash
TEST="test" # この変数が環境変数と同義?
/usr/bin/java -jar Sample.jar
exit 0
・Sample.jar (Sample.java)
public class Sample {
public static void main(String[] args) {
String str = System.getenv("TEST"); // 値"test"が取得可能
System.out.println(str);
}
}
769デフォルトの名無しさん
2022/07/02(土) 15:46:05.19ID:5r3z96xh そのシェル以外のどこかでexportされてる可能性もなくはない
770デフォルトの名無しさん
2022/07/02(土) 15:52:50.74ID:UMJkSd0D771デフォルトの名無しさん
2022/07/02(土) 16:06:22.74ID:0FvUmWjS UNIXという生き方
772デフォルトの名無しさん
2022/07/02(土) 16:07:36.00ID:EoiiwDBr773デフォルトの名無しさん
2022/07/02(土) 16:12:42.46ID:UMJkSd0D774デフォルトの名無しさん
2022/07/02(土) 18:48:20.54ID:s0/GJKKm しかし普通はそんなのが定義されていたからって
だからなんだ?っていう話なんだよな
だからなんだ?っていう話なんだよな
775デフォルトの名無しさん
2022/07/12(火) 23:34:22.21ID:gA1pIjpV 引数解析にgetoptsってどう思う?
776デフォルトの名無しさん
2022/07/13(水) 12:19:30.78ID:EtP8dxEe Ruby では、コマンドライン引数の処理に、OptionParser を使って、
short/long option を定義していく
short/long option を定義していく
777デフォルトの名無しさん
2022/07/13(水) 12:39:57.76ID:Tiof6JBH そうなんだすごいね
778デフォルトの名無しさん
2022/07/13(水) 12:47:37.07ID:C1CGdRc+ >>776が見えない
779デフォルトの名無しさん
2022/07/13(水) 14:35:32.25ID:4m9BBmhO そういう人は多い
どこにでも現れるのでね
どこにでも現れるのでね
780デフォルトの名無しさん
2022/07/13(水) 14:41:02.34ID:7GbSF+de 見えないというのなら見えるようにしてあげよう
ルビーでは、コマンドライン引数の処理に、おぷしょんぱーさー を使って、
short/long option を定義していく
ルビーでは、コマンドライン引数の処理に、おぷしょんぱーさー を使って、
short/long option を定義していく
781デフォルトの名無しさん
2022/07/13(水) 17:17:56.15ID:ygLQXjBv 見えるようになってない
782デフォルトの名無しさん
2022/07/13(水) 17:39:24.41ID:SQcVdjvN なんで見えないのにレスできるんだよwww
783デフォルトの名無しさん
2022/07/13(水) 18:23:16.73ID:ccIVitkd >>775
好きにすればいいと思う
好きにすればいいと思う
784デフォルトの名無しさん
2022/07/13(水) 18:48:04.93ID:EtP8dxEe Ruby のoptparse なら、
ruby ./a.rb -a -b1 --foo --bar x
require 'optparse'
# ARGV.replace %w(-a -b1 --foo --bar x)
opt = OptionParser.new
p params = opt.getopts( ARGV, "ab:", "foo", "bar:" )
#=> {"a"=>true, "b"=>"1", "foo"=>true, "bar"=>"x"}
ruby ./a.rb -a -b1 --foo --bar x
require 'optparse'
# ARGV.replace %w(-a -b1 --foo --bar x)
opt = OptionParser.new
p params = opt.getopts( ARGV, "ab:", "foo", "bar:" )
#=> {"a"=>true, "b"=>"1", "foo"=>true, "bar"=>"x"}
785デフォルトの名無しさん
2022/07/13(水) 19:41:24.35ID:8ZGfs65M >>780も見えなくした
786デフォルトの名無しさん
2022/07/14(木) 16:46:11.67ID:mBJkiOUt787デフォルトの名無しさん
2022/07/14(木) 16:48:02.99ID:rMT+3vzc どうしたまして
788デフォルトの名無しさん
2022/07/14(木) 17:15:45.36ID:mlhFFI9d short/longと前置/後置の両方サポートしたければ
getoptもgetoptsもダメだよね?
getoptもgetoptsもダメだよね?
789デフォルトの名無しさん
2022/07/21(木) 12:16:57.01ID:T68Jlsts realpathコマンドは、Windowsだと何に相当しますか?
シンボリックリンクとか仮想ドライブ経由の実ファイルを特定する方法は、Linuxだとちゃんとあるけど、Windowsはどうしてるんだろ?
シンボリックリンクとか仮想ドライブ経由の実ファイルを特定する方法は、Linuxだとちゃんとあるけど、Windowsはどうしてるんだろ?
790デフォルトの名無しさん
2022/07/26(火) 20:15:56.25ID:Yo0JxkCi trapコマンドなるもの知ったので試そうと以下のシェルを実行したんだが上手く行かない
どうしてだろう
<test.sh>
#!/bin/bash
sleep 15 && echo "15 seconds have passed"
trap 'echo SIGINT' SIGINT
$ ./test.sh
で
15秒経つ前にVSCodeからCtrl + Cしても音沙汰無し(念のためteratermからもやってみたけど同じ)
15秒待てばechoされるのは確認済み
最後に「trap -p」を追加してみるとちゃんとSIGINTが設定されてるのが出るんだけど
どうしてだろう
<test.sh>
#!/bin/bash
sleep 15 && echo "15 seconds have passed"
trap 'echo SIGINT' SIGINT
$ ./test.sh
で
15秒経つ前にVSCodeからCtrl + Cしても音沙汰無し(念のためteratermからもやってみたけど同じ)
15秒待てばechoされるのは確認済み
最後に「trap -p」を追加してみるとちゃんとSIGINTが設定されてるのが出るんだけど
791デフォルトの名無しさん
2022/07/26(火) 20:23:32.74ID:Yo0JxkCi 自己解決しました
trap~の行を先頭に持って行ったら上手く行きました
trap~の行を先頭に持って行ったら上手く行きました
792デフォルトの名無しさん
2022/07/27(水) 01:33:17.01ID:IYeKVuXU トラップ?いいか、物語
793デフォルトの名無しさん
2022/07/27(水) 02:31:59.58ID:8I1dQN/H トラップ一家物語って子どもの頃は怖かった
マリア?だっけが怒られるシーンとか苦手
マリア?だっけが怒られるシーンとか苦手
794デフォルトの名無しさん
2022/07/27(水) 05:21:39.36ID:IYeKVuXU そういやデブだっていじめられてたっけ?
マリアはデブ。MariaDB
マリアはデブ。MariaDB
795デフォルトの名無しさん
2022/07/28(木) 20:48:38.50ID:oYIQQ6EM MariaDBは新規に採用されることはもうないだろうな。
796デフォルトの名無しさん
2022/08/20(土) 12:16:27.18ID:/HP/Kkeq exec cmd1 | cmd2
と
cmd1 | exec cmd2 ってどっちが親のプロセスになるかってだけで同じだよね
どっちのほうがいいとかってあったりする?
と
cmd1 | exec cmd2 ってどっちが親のプロセスになるかってだけで同じだよね
どっちのほうがいいとかってあったりする?
797デフォルトの名無しさん
2022/08/20(土) 14:20:05.28ID:kiVzxibA798デフォルトの名無しさん
2022/08/20(土) 14:20:29.69ID:yCCCo4Qv >>797
安価間違ってますよ
安価間違ってますよ
799デフォルトの名無しさん
2022/08/20(土) 14:21:03.89ID:kiVzxibA >>789
自動補完しろ
自動補完しろ
800デフォルトの名無しさん
2022/08/20(土) 15:34:56.76ID:l3DwVL0Z 800
801デフォルトの名無しさん
2022/08/20(土) 15:44:54.21ID:VTC7uJpL 801(やおい)
802デフォルトの名無しさん
2022/08/22(月) 23:52:48.15ID:4DKxAEVF bashの変数展開って可読性低いかな
803デフォルトの名無しさん
2022/08/23(火) 12:11:27.31ID:ZigpqJDA PATH=$ADD_PATH:$PATH
でPATHにすでに$ADD_PATHが含まれてない場合にだけ追加するやり方ない?ループとか回さずにいい感じにやるやり方
でPATHにすでに$ADD_PATHが含まれてない場合にだけ追加するやり方ない?ループとか回さずにいい感じにやるやり方
804デフォルトの名無しさん
2022/08/23(火) 13:24:30.27ID:IsFqNvj1805デフォルトの名無しさん
2022/08/23(火) 13:32:35.69ID:IsFqNvj1 こんなのもあるのか
www.rapidee.com/en/command-line
www.rapidee.com/en/command-line
806デフォルトの名無しさん
2022/08/23(火) 16:25:42.99ID:QjLy6Z4J >>803
パスの前後に:をつけてパスの前後に必ず:が付いた状態でgrepかけるのはダメ?
if ! grep -q ":${ADD_PATH}:" <<< ":${PATH}:" ; then
PATH="${ADD_PATH}:$PATH"
export PATH
fi
パスの前後に:をつけてパスの前後に必ず:が付いた状態でgrepかけるのはダメ?
if ! grep -q ":${ADD_PATH}:" <<< ":${PATH}:" ; then
PATH="${ADD_PATH}:$PATH"
export PATH
fi
807デフォルトの名無しさん
2022/08/24(水) 12:04:37.37ID:mIEON09S [[ :$PATH: != *:$ADD_PATH:* ]] && PATH="$ADD_PATH${PATH:+:$PATH}"
[ "$PATH" != "$ADD_PATH" ] && [ "$PATH$PATH$PATH" = "${PATH#$ADD_PATH:}${PATH#*:$ADD_PATH:}${PATH%:$ADD_PATH}" ] && PATH="$ADD_PATH${PATH:+:$PATH}"
[ "$PATH" != "$ADD_PATH" ] && [ "$PATH$PATH$PATH" = "${PATH#$ADD_PATH:}${PATH#*:$ADD_PATH:}${PATH%:$ADD_PATH}" ] && PATH="$ADD_PATH${PATH:+:$PATH}"
808デフォルトの名無しさん
2022/08/24(水) 15:25:47.26ID:pB12lFr9 てrst
809デフォルトの名無しさん
2022/08/24(水) 15:29:23.30ID:pB12lFr9 ほらよ。お前ら自分でコードもかけんのか?
prepend_path() {
case ":$PATH:" in
*:"$2":*) return 0
esac
PATH="$2${PATH:+:}$PATH"
}
prepend_path "$ADD_PATH"
prepend_path() {
case ":$PATH:" in
*:"$2":*) return 0
esac
PATH="$2${PATH:+:}$PATH"
}
prepend_path "$ADD_PATH"
810デフォルトの名無しさん
2022/09/30(金) 01:19:18.32ID:hEL3H+Kq シェルショッカーのせいのでこのスレ廃れたな
811デフォルトの名無しさん
2022/09/30(金) 13:44:24.20ID:Yhp7EPAh シェルが一番楽でいい
大好き
大好き
812デフォルトの名無しさん
2022/09/30(金) 20:48:28.54ID:lIBPtEW1 Twitterの#シェル芸とか、うんことか変な吹き出しとか
おっさん臭キツイんだけど、あれ何が楽しくてやってるの?
おっさん臭キツイんだけど、あれ何が楽しくてやってるの?
813デフォルトの名無しさん
2022/09/30(金) 22:18:24.47ID:6qvEDMgz シェル芸と言えば、USP 研究所の上田隆一。
シェルスクリプトを芸にまで高めた香具師
でも、上田の本を見たら、解答がRuby などのスクリプト言語でも書いてあるw
シェルスクリプトを芸にまで高めた香具師
でも、上田の本を見たら、解答がRuby などのスクリプト言語でも書いてあるw
814813
2022/09/30(金) 22:22:22.63ID:6qvEDMgz シェル芸で、ここはRuby の1 Liner を使ってとか、
シェル芸には、Rubyなどのスクリプト言語の1 Liner も含むw
シェル芸には、Rubyなどのスクリプト言語の1 Liner も含むw
815デフォルトの名無しさん
2022/09/30(金) 22:38:49.73ID:6fU78nEj > シェルスクリプトを芸にまで高めた香具師
これが間違ってる
シェル芸=シェルスクリプト芸じゃないぞ
これが間違ってる
シェル芸=シェルスクリプト芸じゃないぞ
816デフォルトの名無しさん
2022/10/01(土) 00:37:08.33ID:nJiCANZy つか、シェル芸って、シェルスクリプトの機能ってほとんど使わんやん
パイプぐらいでしょ?
パイプぐらいでしょ?
817デフォルトの名無しさん
2022/10/01(土) 01:49:51.63ID:WNV5xseU 何を以てシェル芸というのか
818デフォルトの名無しさん
2022/10/01(土) 01:53:22.04ID:A++1DWcf ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8
819デフォルトの名無しさん
2022/10/01(土) 02:14:51.81ID:WNV5xseU >>818
ワンライナー縛りだったのか
ワンライナー縛りだったのか
820デフォルトの名無しさん
2022/10/01(土) 03:05:59.90ID:r/3KV4QL >>818
上田さんが書いたページですか?
上田さんが書いたページですか?
821デフォルトの名無しさん
2022/10/01(土) 03:56:20.81ID:nJiCANZy >>820
> 上田さんが書いたページですか?
本人がwikipediaに書いたのかもねw
つか、本人のブログへのリンクあるじゃん
https://b.ueda.tech/?page=01434
> シェル芸の定義バージョン1.1
> マウスも使わず、ソースコードも残さず、GUIツールを立ち上げる間もなく、
> あらゆる調査・計算・テキスト処理をCLI端末へのコマンド入力一撃で終わらすこと。
> あるいはそのときのコマンド入力のこと。
>
> 要は
> Unix系OSのシェル上でのワンライナーのことです。勝手に名前つけてすんません。
ソースコードを残さない時点でシェルスクリプトじゃないし、
これが定義ならシェルからワンライナーで実行するならperlとかも使っていい
POSIX原理主義とは真っ向から対立してる
> 上田さんが書いたページですか?
本人がwikipediaに書いたのかもねw
つか、本人のブログへのリンクあるじゃん
https://b.ueda.tech/?page=01434
> シェル芸の定義バージョン1.1
> マウスも使わず、ソースコードも残さず、GUIツールを立ち上げる間もなく、
> あらゆる調査・計算・テキスト処理をCLI端末へのコマンド入力一撃で終わらすこと。
> あるいはそのときのコマンド入力のこと。
>
> 要は
> Unix系OSのシェル上でのワンライナーのことです。勝手に名前つけてすんません。
ソースコードを残さない時点でシェルスクリプトじゃないし、
これが定義ならシェルからワンライナーで実行するならperlとかも使っていい
POSIX原理主義とは真っ向から対立してる
822813
2022/10/01(土) 09:15:00.12ID:WF3iEAg3 上田は、シェル芸の定義まで作っていたのかw
まあ、しゃーない。
シェル芸を生み出したのは上田だから
まあ、しゃーない。
シェル芸を生み出したのは上田だから
823デフォルトの名無しさん
2022/10/01(土) 09:52:04.30ID:vUFg+rJu シェル芸って昔からあるワンライナーの日本語訳みたいなもんでしょ?
上田が生み出したとは言えないのでは
上田が生み出したとは言えないのでは
824デフォルトの名無しさん
2022/10/01(土) 10:26:42.87ID:SMOLsqD3 なんだ?上田ってやつはワンライナーを言い換えた程度で
wikipediaのページまで作ってるのかw
wikipediaのページまで作ってるのかw
825デフォルトの名無しさん
2022/10/01(土) 10:44:12.58ID:a2GTR0qK その手のワンライナーがスイスイ書けるならそれでいいがワンライナーにするために考え込むぐらいなら普通に複数行使って書いた方が早いし使い回ししやすい
826デフォルトの名無しさん
2022/10/01(土) 10:57:25.49ID:SMOLsqD3 > コマンド入力一撃で終わらすこと。
試行錯誤で何度も実行してるよねw
試行錯誤で何度も実行してるよねw
827デフォルトの名無しさん
2022/10/01(土) 17:43:09.08ID:0xrmLtr7 普通にスクリプト書いて終わりでいいじゃん
828デフォルトの名無しさん
2022/10/01(土) 22:13:37.09ID:WF3iEAg3 シェル芸は、雑誌で連載していた人気企画だったのに終わってしまった
今でも、勉強会などでやっているのかも
今でも、勉強会などでやっているのかも
829デフォルトの名無しさん
2022/10/01(土) 23:27:02.91ID:SMOLsqD3 今は手作業じゃなくて自動化の時代ですしw
830デフォルトの名無しさん
2022/10/02(日) 00:38:08.91ID:WZvawmk5 ワンライナーはともかくシェル芸やってる人って
競技プログラミングやってみるみたいなもので
現実の問題を解くというより、問題のための問題を
解くって感じだから実用的じゃないよね
競技プログラミングやってみるみたいなもので
現実の問題を解くというより、問題のための問題を
解くって感じだから実用的じゃないよね
831デフォルトの名無しさん
2022/10/02(日) 12:49:06.04ID:nQhJJvDz 15年位前まで仕事でシェルスクリプト触ってたけど
ワンライナーの人は難読化させてたように思うね
自身しかわからないようにして仕事がなくならないようにしてた
ワンライナーの人は難読化させてたように思うね
自身しかわからないようにして仕事がなくならないようにしてた
832デフォルトの名無しさん
2022/10/02(日) 13:20:01.30ID:QRKSlI6k 最近はワンライナーもpythonで書いてるわ。
833デフォルトの名無しさん
2022/10/02(日) 23:04:22.94ID:P9RAxpp0 ワンライナーなら、PythonよりはPerlやろ。
834デフォルトの名無しさん
2022/10/03(月) 02:57:52.90ID:bidh+76+ Pythonの文法でワンライナーって可能なのか?
ワンライナーならPerlとRubyだろうな
一行でコードを書ける
ワンライナーならPerlとRubyだろうな
一行でコードを書ける
835デフォルトの名無しさん
2022/10/03(月) 03:17:23.26ID:VpzdjDDF 引数で入力テキスト取れるんだからそりゃ書けるけど、インデントと改行文字埋め込みが辛い
あとperlみたいにfeature全部盛りオプションがないのでボイラープレートが割と要る
あとperlみたいにfeature全部盛りオプションがないのでボイラープレートが割と要る
836デフォルトの名無しさん
2022/10/03(月) 16:27:05.78ID:M4csbtG9 awkとか使うと一行になっちゃう
837デフォルトの名無しさん
2022/10/03(月) 17:26:07.03ID:bidh+76+ ならねーだろ。つか一行100文字超えるなや
838デフォルトの名無しさん
2022/10/03(月) 17:46:22.23ID:ZyVxlvNn 自分勝手すぎ
839デフォルトの名無しさん
2022/10/03(月) 18:10:34.89ID:pcuzjq2H Ruby の1 liner では、
-r で、モジュールを読み込める。require
例えば、csv を使うのなら、-rcsv とする。
だから、awk はいらない
-r で、モジュールを読み込める。require
例えば、csv を使うのなら、-rcsv とする。
だから、awk はいらない
840デフォルトの名無しさん
2022/10/03(月) 20:56:25.38ID:fL6GSL1h rubyしか使いません使いたくありませんって言ってるだけだな
841デフォルトの名無しさん
2022/10/04(火) 03:06:20.40ID:F9I3VOct rubyを使うとかアホらしい
そのモジュールにバグとかあったらどうするんだ?
俺が作ったcsvライブラリを使え
awkで作った
そのモジュールにバグとかあったらどうするんだ?
俺が作ったcsvライブラリを使え
awkで作った
842デフォルトの名無しさん
2022/10/04(火) 03:08:24.97ID:F9I3VOct 俺が作ったcsvパーサーをインストールされば
rubyをインストールしないですむ
俺が作ったcsvパーサーはGitHubでスター68個もある
rubyをインストールしないですむ
俺が作ったcsvパーサーはGitHubでスター68個もある
843デフォルトの名無しさん
2022/10/04(火) 03:10:11.52ID:F9I3VOct 俺が作ったcsvパーサーなら、ファイルを適切なところにコピーするだけで動く
rubyのインストールは難しい。誰にでもできるような作業じゃない
rubyのインストールは難しい。誰にでもできるような作業じゃない
844デフォルトの名無しさん
2022/10/04(火) 03:13:47.12ID:F9I3VOct 俺が作ったcsvパーサーはコメント除いて200行ちょっとしかない
たった200行書くだけでrubyは不要になる
200書く方がインストールよりも簡単だ
たった200行書くだけでrubyは不要になる
200書く方がインストールよりも簡単だ
845デフォルトの名無しさん
2022/10/04(火) 03:50:56.15ID:PkeNAHz9 押しが強いのばかりだな。なんでお前らそんなのきもいのか
846デフォルトの名無しさん
2022/10/04(火) 06:08:41.35ID:d4cMYyPK 何かワロタw
847デフォルトの名無しさん
2022/10/04(火) 15:15:12.62ID:M2uNOhVe とはいえCSVの扱い方っていうのはまあまあのバカ発見器だと思う
848デフォルトの名無しさん
2022/10/04(火) 15:36:06.28ID:VPNCWU/y というと?
849デフォルトの名無しさん
2022/10/04(火) 16:05:16.77ID:d0x64lde Rubyのインストールが難しいとか言ってるやつの書いたCSVパーサーww
使ってるやつ絶対アホ
使ってるやつ絶対アホ
850デフォルトの名無しさん
2022/10/04(火) 16:14:37.74ID:LlVt6c8r ダブルクォーテーション内のコンマ改行、エスケープ文字、空白、空行、末尾コンマ、行ごとの列数ブレの扱いや、エンコード、読み込みバッファの使い方とかかしら
851デフォルトの名無しさん
2022/10/04(火) 21:21:17.34ID:GpOlx84l クォートがダブルクォーテーションとは限らないしそもそもクォートされてるとも限らない
852デフォルトの名無しさん
2022/10/04(火) 23:27:34.84ID:CNGS9dK7 シェル芸では、CSV をAWK で書くけど、
ダブルクォーテーション内に、
ダブルクォーテーション、行区切り文字の改行、列区切り文字のカンマがあるとバグる
だから問題では、それらは存在しない事になっていて、現実的ではない。
シェル芸は、あくまでもパズル。頭の体操
ダブルクォーテーション内に、
ダブルクォーテーション、行区切り文字の改行、列区切り文字のカンマがあるとバグる
だから問題では、それらは存在しない事になっていて、現実的ではない。
シェル芸は、あくまでもパズル。頭の体操
853デフォルトの名無しさん
2022/10/05(水) 01:52:54.69ID:SF0K7+3w854デフォルトの名無しさん
2022/10/07(金) 21:40:47.14ID:/7BkWz35 おまえらこういうのがシェルゲイだよ
/bin/sh -c 'while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-32));date;tput rc;done &'
/bin/sh -c 'while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-32));date;tput rc;done &'
855デフォルトの名無しさん
2022/10/08(土) 07:32:17.40ID:sJ7nSBE8 さすがに一行すぎるwww
856デフォルトの名無しさん
2022/10/08(土) 08:58:04.16ID:ZJ2MUJ2n シュル芸って一行ならなんでもいいのけ?
1000行ぐらいのシェルスクリプトだって
セミコロンでつなげば一行になると思うが?
1000行ぐらいのシェルスクリプトだって
セミコロンでつなげば一行になると思うが?
857デフォルトの名無しさん
2022/10/08(土) 17:52:45.45ID:sJ7nSBE8 ネタをネタとわからない人は・・・
858デフォルトの名無しさん
2022/10/09(日) 10:39:58.10ID:CEIVYWT/ ./自作便利コマンド.rb
こういうのもシェル芸になるのかな?w
./OSS便利コマンド
だって、これはシェル芸やろ?w
こういうのもシェル芸になるのかな?w
./OSS便利コマンド
だって、これはシェル芸やろ?w
859デフォルトの名無しさん
2022/10/09(日) 15:35:04.77ID:pTe7tmBB 見たやつにへぇーボタンを押させるかどうかよ すべってたり寒かったらスルーされるだけ
860デフォルトの名無しさん
2022/10/09(日) 16:31:25.65ID:j4hTJmxG すでに定義が貼られてるのにこれは?これは?って聞いてるのバカすぎるだろ
861デフォルトの名無しさん
2022/10/09(日) 17:24:33.51ID:CEIVYWT/862デフォルトの名無しさん
2022/10/09(日) 17:38:55.72ID:j4hTJmxG >>861
うん、いいよ。だからいちいち聞かなくておk
うん、いいよ。だからいちいち聞かなくておk
863デフォルトの名無しさん
2022/10/09(日) 17:52:14.19ID:CEIVYWT/864デフォルトの名無しさん
2022/10/09(日) 18:05:06.86ID:0M9/zkAJ 聞く前から答えが分かってるからだろ馬鹿w
865デフォルトの名無しさん
2022/10/09(日) 18:22:07.86ID:CEIVYWT/ >>864
だからその答えを言えばいいだけだろwww
だからその答えを言えばいいだけだろwww
866デフォルトの名無しさん
2022/10/09(日) 18:59:37.92ID:oIDn8Gmd もめてんのか?
おっちゃんが仲裁してやろうか?
おっちゃんが仲裁してやろうか?
867デフォルトの名無しさん
2022/10/09(日) 19:29:32.64ID:CEIVYWT/868デフォルトの名無しさん
2022/10/10(月) 08:55:39.46ID:ASWlLsU8 道理にかなってるとかじゃなくて面白いかどうかなのに、
アスペにはわからない模様
アスペにはわからない模様
869デフォルトの名無しさん
2022/10/10(月) 09:26:26.12ID:87F2gLmT >>868
それお前の感想ですよねw
それお前の感想ですよねw
870デフォルトの名無しさん
2022/10/12(水) 21:53:12.49ID:MhrQ6ttv tarの書き方で歳が分かる
871デフォルトの名無しさん
2022/10/12(水) 22:20:40.52ID:HU6qoXxl tarはPOSIXに準拠してないので使わない
872デフォルトの名無しさん
2022/10/15(土) 20:43:57.71ID:aC7xlUxJ POSIXに準拠したtarを作ればいいじゃん
873デフォルトの名無しさん
2022/10/16(日) 00:36:11.22ID:EpE6LQff POSIX準拠とかこだわってどうするんだろう?
絶対に完全オフライン環境でも使えなければならない理由があるなら別だが、そうでなければ無いものはダウンロードすればいいだけなのに
絶対に完全オフライン環境でも使えなければならない理由があるなら別だが、そうでなければ無いものはダウンロードすればいいだけなのに
874デフォルトの名無しさん
2022/10/16(日) 01:44:06.87ID:AdicRi1j >>873
おろかものめ。Pythonやライブラリを使うとソフトウェアの持続性が短くなる
シェルスクリプトはメンテンスフリーだ。古いOSから最新OSにまで対応できる
ファイルをコピーするだけでいいからインストールが簡単だ
POSIXは1988年に規格化されてからほとんど変わらない
POSIXに準拠していないものは移植性が低い
POSIXに準拠していればLinuxでもMacでもいつでもどこでも動く製品を開発可能だ
これはシェルスクリプト以外では不可能だ
POSIXだけが25年経ってもメンテナンスせずに動き続けるソフトウェアを作れるのだ
おろかものめ。Pythonやライブラリを使うとソフトウェアの持続性が短くなる
シェルスクリプトはメンテンスフリーだ。古いOSから最新OSにまで対応できる
ファイルをコピーするだけでいいからインストールが簡単だ
POSIXは1988年に規格化されてからほとんど変わらない
POSIXに準拠していないものは移植性が低い
POSIXに準拠していればLinuxでもMacでもいつでもどこでも動く製品を開発可能だ
これはシェルスクリプト以外では不可能だ
POSIXだけが25年経ってもメンテナンスせずに動き続けるソフトウェアを作れるのだ
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は適当だけど、既に予約されてて意味の通るトークンが流用できれば望ましい
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秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 生活保護廃止、公務員の給与に最低賃金を適用⇦これをやるだけで国民の9割の不満が解消されるのにやらない理由 [218488394]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
- 台湾政党が高市首相「存立危機事態」発言に感謝の書簡「我々の心を強く奮い立たせるものでした」 [834922174]
