シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
シェルスクリプト総合 その31
■ このスレッドは過去ログ倉庫に格納されています
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
678デフォルトの名無しさん
2019/09/29(日) 21:21:56.71ID:1ct4yMlj 補足
例えば「1 + 1」は、"1"コマンドを、+と1という引数で呼び出すという意味になるし
「1+1」だと"1+1"コマンドになる。
選択肢が限られるんだよね
例えば「1 + 1」は、"1"コマンドを、+と1という引数で呼び出すという意味になるし
「1+1」だと"1+1"コマンドになる。
選択肢が限られるんだよね
679デフォルトの名無しさん
2019/09/30(月) 06:57:25.74ID:Ceph+2oU $ awk 'BEGIN {print 0.1+0.2}'
0.3
bcより使いやすい悲しみ
0.3
bcより使いやすい悲しみ
680デフォルトの名無しさん
2019/09/30(月) 13:47:50.63ID:bgqbOy9v POSIXの仕様書,
算術展開での(浮動)小数点演算は今度の2020年度改訂で一部解禁されるらしい。
ちなみに時を同じくして$'\n'←みたいな書式も解禁。
やったぜ。
算術展開での(浮動)小数点演算は今度の2020年度改訂で一部解禁されるらしい。
ちなみに時を同じくして$'\n'←みたいな書式も解禁。
やったぜ。
681デフォルトの名無しさん
2019/09/30(月) 14:14:05.05ID:gJLA2fQe やったぜ。
682デフォルトの名無しさん
2019/09/30(月) 14:57:01.11ID:seE3nGDx 石器時代かよワロタw
683デフォルトの名無しさん
2019/09/30(月) 14:59:09.67ID:1VQTT5dv 生理がこないんですけど
どうしたらいいですか?
どうしたらいいですか?
684デフォルトの名無しさん
2019/09/30(月) 15:14:42.58ID:g4qimp0d 俺も生理来たことないわー
685デフォルトの名無しさん
2019/09/30(月) 15:24:33.48ID:g4qimp0d >>680
どこ情報ですか?
どこ情報ですか?
686デフォルトの名無しさん
2019/09/30(月) 17:46:55.62ID:zGRcNdYK もしもし、先生!もしもし!
だけどもねー、実はあのー、子供つくらないようにしてるんですよね、わたくしも本当に辛くてですね、子供には遺伝しないでしょうか?
だけどもねー、実はあのー、子供つくらないようにしてるんですよね、わたくしも本当に辛くてですね、子供には遺伝しないでしょうか?
687デフォルトの名無しさん
2019/09/30(月) 19:45:29.40ID:bgqbOy9v688デフォルトの名無しさん
2019/09/30(月) 20:35:29.76ID:sHSicWZI >>687
いや、小数の話
いや、小数の話
689デフォルトの名無しさん
2019/09/30(月) 21:58:43.29ID:M1BD3UNk しょうっすか…
690デフォルトの名無しさん
2019/09/30(月) 23:03:44.06ID:qRuhgEzP 無理にシェルスクリプトだけで小数対応しなくても、
perl -e "print 0.2*0.3"
とか、いろいろやりようはあるからあまり必要性を感じない。
perl -e "print 0.2*0.3"
とか、いろいろやりようはあるからあまり必要性を感じない。
691デフォルトの名無しさん
2019/09/30(月) 23:20:20.33ID:nI7iDoAi >>690
大量に計算をするとプロセス呼び出しになるから遅いんだよ
$ time ksh -c 'for i in $(seq 1000); do n=$(echo "0.2*0.3" | bc -l); done'
real 0m1.921s
user 0m1.762s
sys 0m0.715s
$ time ksh -c 'for i in $(seq 1000); do n=$((0.2*0.3)); done'
real 0m0.009s
user 0m0.009s
sys 0m0.000s
たったの1000回でここまで差が出るからね
大量に計算をするとプロセス呼び出しになるから遅いんだよ
$ time ksh -c 'for i in $(seq 1000); do n=$(echo "0.2*0.3" | bc -l); done'
real 0m1.921s
user 0m1.762s
sys 0m0.715s
$ time ksh -c 'for i in $(seq 1000); do n=$((0.2*0.3)); done'
real 0m0.009s
user 0m0.009s
sys 0m0.000s
たったの1000回でここまで差が出るからね
692デフォルトの名無しさん
2019/09/30(月) 23:28:35.91ID:qRuhgEzP 意図と違うと思うが、
time perl -e '$j=0; for($i=0;$i<1000;$i+=1) { $j+=0.2*0.3; }; print $j'
とか、別にシェルスクリプトだけに頼らんでもなんとかなってしまうというか・・・・
time perl -e '$j=0; for($i=0;$i<1000;$i+=1) { $j+=0.2*0.3; }; print $j'
とか、別にシェルスクリプトだけに頼らんでもなんとかなってしまうというか・・・・
693デフォルトの名無しさん
2019/09/30(月) 23:29:54.18ID:nI7iDoAi だから出来るできないの話はして無くて
遅いって話をしてる
遅いって話をしてる
694デフォルトの名無しさん
2019/09/30(月) 23:35:15.29ID:1VQTT5dv >>692
これで事足りるな
これで事足りるな
695デフォルトの名無しさん
2019/09/30(月) 23:58:52.54ID:nI7iDoAi perlは入ってない環境も有るのでその点でも駄目だしね
696デフォルトの名無しさん
2019/10/01(火) 00:02:33.23ID:cNB/gbgI >>679
これで事足りるな
これで事足りるな
697デフォルトの名無しさん
2019/10/01(火) 00:27:03.86ID:rxcb8vGn 必須すぎやろw
698デフォルトの名無しさん
2019/10/01(火) 01:47:40.69ID:SPlRKvH8 なになに縛りが好きなマゾなんだろうw
699デフォルトの名無しさん
2019/10/01(火) 02:00:19.69ID:rxcb8vGn そんな事する必要がないなら縛りって言ってもいいけど、
perlが入ってない環境は実際に存在するからね
perlが入ってない環境は実際に存在するからね
700デフォルトの名無しさん
2019/10/01(火) 02:09:56.58ID:ESup7bfu awkも使えない環境で何やるんだよw
701デフォルトの名無しさん
2019/10/01(火) 02:09:58.85ID:PTA8MEY/702デフォルトの名無しさん
2019/10/01(火) 02:36:49.10ID:eGCx9XC9 >>700
awkはbusyboxに入ってるよw
awkはbusyboxに入ってるよw
703デフォルトの名無しさん
2019/10/01(火) 09:01:32.62ID:O2y9FdCY 「可搬性が高い」を「POSIX縛り」と取り違えてるおバカさんがいますね…
704デフォルトの名無しさん
2019/10/01(火) 09:11:30.09ID:ZA6pNaC0 POSIXで縛るだけではPOSIX未満のbusyboxで動かなかったりするからね
可搬性を高くするにはPOSIXで規定されたコマンドであっても
なるべく使わないほうが良い
可搬性を高くするにはPOSIXで規定されたコマンドであっても
なるべく使わないほうが良い
705デフォルトの名無しさん
2019/10/01(火) 10:51:02.41ID:CGhZJwfl どういうことなの…
706デフォルトの名無しさん
2019/10/01(火) 11:09:51.43ID:ZA6pNaC0 ここはシェルスクリプトのスレ
つまり可搬性とはシェルスクリプトの話をしてる。
シェルスクリプトではよく外部コマンドを呼び出す
しかし外部コマンドはOSによって違う。
特に基本的なコマンドは、各OSでバラバラに作っていたり
独自の修正を入れており複数の実装があり微妙に動きが異なっている。
例えば、LinuxのsedとMacのsedでは使える命令が違う。
POSIX準拠のコマンド(もちろんオプションなども含む)で規定されてるものだけを
使っていれば可搬性はそれなりにあるが、それでも完璧じゃない。
例えば組み込みで使われるbusyboxはPOSIX準拠コマンドのサブセットが実装されてる。
だから本気で可搬性を高くしようと思えばPOSIX縛りでも不十分。
POSIX準拠のコマンドが信じれない。という前提にたてば
思い切って外部コマンドすら呼び出さない、完全にシェルスクリプトだけで
実装するのがもっとも可搬性が高い。
もちろん限界は有るので実際には出来る限りシェルスクリプトで作って、
外部コマンドは必要最小限、必要に応じて互換性を吸収するようにラッパー関数を作る。
ということになる。
つまり可搬性とはシェルスクリプトの話をしてる。
シェルスクリプトではよく外部コマンドを呼び出す
しかし外部コマンドはOSによって違う。
特に基本的なコマンドは、各OSでバラバラに作っていたり
独自の修正を入れており複数の実装があり微妙に動きが異なっている。
例えば、LinuxのsedとMacのsedでは使える命令が違う。
POSIX準拠のコマンド(もちろんオプションなども含む)で規定されてるものだけを
使っていれば可搬性はそれなりにあるが、それでも完璧じゃない。
例えば組み込みで使われるbusyboxはPOSIX準拠コマンドのサブセットが実装されてる。
だから本気で可搬性を高くしようと思えばPOSIX縛りでも不十分。
POSIX準拠のコマンドが信じれない。という前提にたてば
思い切って外部コマンドすら呼び出さない、完全にシェルスクリプトだけで
実装するのがもっとも可搬性が高い。
もちろん限界は有るので実際には出来る限りシェルスクリプトで作って、
外部コマンドは必要最小限、必要に応じて互換性を吸収するようにラッパー関数を作る。
ということになる。
707デフォルトの名無しさん
2019/10/01(火) 15:50:14.87ID:P1455Lxu 可搬性に異常に拘っているのは一人か二人しかいないけどな
可搬性に拘ってないというレスにも可搬性を押し付ける
可搬性に拘ってないというレスにも可搬性を押し付ける
708デフォルトの名無しさん
2019/10/01(火) 16:28:55.36ID:9fvqkmcJ 認めろよ。
シェルスクリプトに可搬性などない。
どこでも動くシェルスクリプトなど幻想。
シェルスクリプトに可搬性などない。
どこでも動くシェルスクリプトなど幻想。
709デフォルトの名無しさん
2019/10/01(火) 16:40:08.47ID:8eIOCDAd hoge () {
echo "Hello"
}
for i in $(seq 1000); do
hoge
a=$(hoge)
done
myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな
簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
echo "Hello"
}
for i in $(seq 1000); do
hoge
a=$(hoge)
done
myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな
簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
710デフォルトの名無しさん
2019/10/01(火) 16:46:56.18ID:O2y9FdCY それBashでやってない?
試しにKshでやってみて。(俺環かもしれんから,速度比較は晒さない)
試しにKshでやってみて。(俺環かもしれんから,速度比較は晒さない)
711デフォルトの名無しさん
2019/10/01(火) 16:52:40.16ID:/6RuW8/Q perlが入ってない環境ってそれは入れる必要ないんだろ
一から構築していくならそれでいいけど
一から構築していくならそれでいいけど
712デフォルトの名無しさん
2019/10/01(火) 16:54:32.38ID:8eIOCDAd なるほど。ksh(だけが?)がなんか賢いかな。zsh他も差がある
713デフォルトの名無しさん
2019/10/01(火) 17:07:00.59ID:cNB/gbgI perlが無い環境があるからどうのこうの言うけど
kshが無い環境があるからは言わないんだなw
kshが無い環境があるからは言わないんだなw
714デフォルトの名無しさん
2019/10/01(火) 17:10:13.56ID:8eIOCDAd 違う人じゃね?同一人物だったらアレだけどw
715デフォルトの名無しさん
2019/10/01(火) 18:59:48.82ID:8eIOCDAd716デフォルトの名無しさん
2019/10/01(火) 19:16:54.12ID:fust4gpU >>709
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない
kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。
https://codeday.me/jp/qa/20190810/1425430.html
kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない
kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。
https://codeday.me/jp/qa/20190810/1425430.html
kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
717デフォルトの名無しさん
2019/10/01(火) 19:25:21.59ID:fust4gpU 遅い原因の本質は標準出力のキャプチャじゃないから
この二つでも違いがでる
hoge () {
:
}
for i in $(seq 1000); do
hoge
(hoge)
done
>>715
> kshでも差があるね。ループ数増やせば体感できるほどの差となるね
そうなんだよね。サブシェルのコストは以外と大きい。
だから変数に入れて使うことが目的とした関数は以下のように
グローバル変数を使って返したほうがずっと速いわけさ
hoge () {
RET=Hello
}
for i in $(seq 1000); do
hoge
a=$RET
done
この二つでも違いがでる
hoge () {
:
}
for i in $(seq 1000); do
hoge
(hoge)
done
>>715
> kshでも差があるね。ループ数増やせば体感できるほどの差となるね
そうなんだよね。サブシェルのコストは以外と大きい。
だから変数に入れて使うことが目的とした関数は以下のように
グローバル変数を使って返したほうがずっと速いわけさ
hoge () {
RET=Hello
}
for i in $(seq 1000); do
hoge
a=$RET
done
718デフォルトの名無しさん
2019/10/01(火) 19:26:55.18ID:8eIOCDAd >>716
内部関数なのにってとこがね&普通の他の言語とはやはり違うな(まあ当然だが)という(内部汚染とかこれの本題ではないっすよ)
zshはkshを習ってだけど、ちょこちょこ習えてないなあ。kshの否定面のレスだけど、kshは人に優しいとこもあるとも思うw
a=0
ls | while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
っていう見た目他の言語的では当たり前のがちゃんと動くというwまあ、異端だけど
とりあえず、どうしようもないそういうものということでいいのね。どうも
内部関数なのにってとこがね&普通の他の言語とはやはり違うな(まあ当然だが)という(内部汚染とかこれの本題ではないっすよ)
zshはkshを習ってだけど、ちょこちょこ習えてないなあ。kshの否定面のレスだけど、kshは人に優しいとこもあるとも思うw
a=0
ls | while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
っていう見た目他の言語的では当たり前のがちゃんと動くというwまあ、異端だけど
とりあえず、どうしようもないそういうものということでいいのね。どうも
719デフォルトの名無しさん
2019/10/01(火) 19:30:13.87ID:8eIOCDAd >>717
せっかくですが、ちょい本題とは違うかな。そりゃ () は...
なんで内部関数なのにサブシェルになんのかねん、他の言語的感覚ではという
まあ、内部関数だろうと、() と同じで $() もサブシェルになるということをおっしゃっりたいのでしょうけど
どうも
せっかくですが、ちょい本題とは違うかな。そりゃ () は...
なんで内部関数なのにサブシェルになんのかねん、他の言語的感覚ではという
まあ、内部関数だろうと、() と同じで $() もサブシェルになるということをおっしゃっりたいのでしょうけど
どうも
720デフォルトの名無しさん
2019/10/01(火) 19:37:54.80ID:fust4gpU >>719
> なんで内部関数なのにサブシェルになんのかねん、
考え方が違う。
コマンド置換$( ) は「サブシェルを使用して実行する」という"仕様"なんだよ
なんでサブシェルになるのか?ではなく仕様でサブシェルにすると決まってる。
ただし別プロセスにするとは決まっていない。だから子プロセスとかいう既存の
名前ではなく、新たにサブシェルという用語を作った。
サブシェルの仕様としては、「サブシェル内で行った変数などの変更は呼び出し元には伝わらない。」
などがあるが、それを実現してるなら別の別プロセスでなくてもよい。
だけど別プロセスにするほうが実装が簡単だから多くのシェルではサブシェル=別プロセスになってる。
> なんで内部関数なのにサブシェルになんのかねん、
考え方が違う。
コマンド置換$( ) は「サブシェルを使用して実行する」という"仕様"なんだよ
なんでサブシェルになるのか?ではなく仕様でサブシェルにすると決まってる。
ただし別プロセスにするとは決まっていない。だから子プロセスとかいう既存の
名前ではなく、新たにサブシェルという用語を作った。
サブシェルの仕様としては、「サブシェル内で行った変数などの変更は呼び出し元には伝わらない。」
などがあるが、それを実現してるなら別の別プロセスでなくてもよい。
だけど別プロセスにするほうが実装が簡単だから多くのシェルではサブシェル=別プロセスになってる。
721デフォルトの名無しさん
2019/10/01(火) 19:41:25.43ID:8eIOCDAd >>720
その続きなどを読んでよ。言われていることはすでに書いてあるんですけど
どうしようもないという結論が得られたのでw、
結局、こんなことにもそれなりの差があるんだから「常時それも無条件で」実行時間の差があるなんて気にするなんて無意味だなと
なにかそれが問題になったときに気にする対応すればいいだけだなという。のをそもそも言いたかったw
その続きなどを読んでよ。言われていることはすでに書いてあるんですけど
どうしようもないという結論が得られたのでw、
結局、こんなことにもそれなりの差があるんだから「常時それも無条件で」実行時間の差があるなんて気にするなんて無意味だなと
なにかそれが問題になったときに気にする対応すればいいだけだなという。のをそもそも言いたかったw
722デフォルトの名無しさん
2019/10/01(火) 19:44:28.64ID:fust4gpU >>718
> 内部関数なのにってとこがね
他の言語の場合、(基本的に)関数内の変数の変更は呼び出し元に反映されない。
つまりローカル変数になってるだろ?
それと同じなんだよ。POSIXの範囲ではlocalもtypesetもないから
シェルスクリプトにはローカル変数がない
ように思えるが、実はサブシェルを使うからローカル変数は必要ない。とも言える。
ローカル変数を実現するためのサブシェルと言える。
サブシェルの仕様としてローカル変数は必須の機能だが、別プロセスにするのは必須ではない。
サブシェル(別プロセス)と捉えるから仰々しくなってるが、
変数のローカル化と考えれば、内部関数内の変数をローカル化するってだけだから
「内部関数なのに」とは思わないだろ?
> 内部関数なのにってとこがね
他の言語の場合、(基本的に)関数内の変数の変更は呼び出し元に反映されない。
つまりローカル変数になってるだろ?
それと同じなんだよ。POSIXの範囲ではlocalもtypesetもないから
シェルスクリプトにはローカル変数がない
ように思えるが、実はサブシェルを使うからローカル変数は必要ない。とも言える。
ローカル変数を実現するためのサブシェルと言える。
サブシェルの仕様としてローカル変数は必須の機能だが、別プロセスにするのは必須ではない。
サブシェル(別プロセス)と捉えるから仰々しくなってるが、
変数のローカル化と考えれば、内部関数内の変数をローカル化するってだけだから
「内部関数なのに」とは思わないだろ?
723デフォルトの名無しさん
2019/10/01(火) 19:51:56.19ID:8eIOCDAd >>722
なにを教えてくれてるのか教えたいのかわからないです
内部変数?内部変数環境のことは言ってないです。他の言語でもの(内部)関数を呼ぶその返り値を使うって話なんですけど
内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?内部関数という言葉が悪かったならすまんすですけど
なにを教えてくれてるのか教えたいのかわからないです
内部変数?内部変数環境のことは言ってないです。他の言語でもの(内部)関数を呼ぶその返り値を使うって話なんですけど
内部変数云々ならhogeもサブシェルにしなくちゃじゃないですか?内部関数という言葉が悪かったならすまんすですけど
724デフォルトの名無しさん
2019/10/01(火) 19:52:05.05ID:fust4gpU >>718
そのコードに関しては
ls | {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
こう書けばいいって事がわかってから悩むことはなくなったなw
上記をさらに発展して、関数化すれば以下のようになる。
hoge() {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
ls | hoge
そうするとa変数は実質ローカル変数として扱ってるんだから
スコープ的にはこっちのほうが適切だと気づくだろう
そのコードに関しては
ls | {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
こう書けばいいって事がわかってから悩むことはなくなったなw
上記をさらに発展して、関数化すれば以下のようになる。
hoge() {
a=0
while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
}
ls | hoge
そうするとa変数は実質ローカル変数として扱ってるんだから
スコープ的にはこっちのほうが適切だと気づくだろう
725デフォルトの名無しさん
2019/10/01(火) 19:53:21.70ID:fust4gpU726デフォルトの名無しさん
2019/10/01(火) 19:56:56.36ID:8eIOCDAd >>725
なんか教えたがりのようですけど、ちょっと無理があるかなと
あくまでも「他の言語的感覚では」が前提、それとは違うというのの確認でしかないんですけど
使い分けるとかそもそも内部変数の話はしてないんですよ
なんか教えたがりのようですけど、ちょっと無理があるかなと
あくまでも「他の言語的感覚では」が前提、それとは違うというのの確認でしかないんですけど
使い分けるとかそもそも内部変数の話はしてないんですよ
727デフォルトの名無しさん
2019/10/01(火) 20:00:53.41ID:fust4gpU728デフォルトの名無しさん
2019/10/01(火) 20:02:16.96ID:8eIOCDAd そもそものそもそもは、bcの毎回起動するのに時間がかかるというので、せっっかくの標準で暗黙的にもマルチプロセスなのでサーバ&クラアント的に起動しとけばいいんじゃねと
trap 'exec 8>&-; exec 7>&-; rm -f from-server to-server' EXIT
mkfifo from-server
mkfifo to-server
exec 8<> to-server
exec 7<> from-server
< to-server bc -l > from-server &
calc () {
echo "$*" > to-server
read result < from-server
echo $result
}
てのを書いたのよ、単なる興味的にどれだけのコスト削減できるのかを試し確認するために。で、この一連の(他の言語的には)思ってもいなかったとこでコストがあるなと。その確認だけだよ。で、やっぱり>>721のようなことだなとw
trap 'exec 8>&-; exec 7>&-; rm -f from-server to-server' EXIT
mkfifo from-server
mkfifo to-server
exec 8<> to-server
exec 7<> from-server
< to-server bc -l > from-server &
calc () {
echo "$*" > to-server
read result < from-server
echo $result
}
てのを書いたのよ、単なる興味的にどれだけのコスト削減できるのかを試し確認するために。で、この一連の(他の言語的には)思ってもいなかったとこでコストがあるなと。その確認だけだよ。で、やっぱり>>721のようなことだなとw
729デフォルトの名無しさん
2019/10/01(火) 20:02:43.57ID:8eIOCDAd >>727
はいはい
はいはい
730デフォルトの名無しさん
2019/10/01(火) 20:09:04.89ID:fust4gpU731デフォルトの名無しさん
2019/10/01(火) 20:10:22.49ID:8eIOCDAd はいはい。知っていることを延々と言われても。それも聞いてもいないのに
732デフォルトの名無しさん
2019/10/01(火) 21:09:03.88ID:/EdGAgHY733デフォルトの名無しさん
2019/10/01(火) 21:21:30.07ID:T/R8ZN8b ろくにシェルスクリプトのことを知らないから聞いてみた。
親切に教えてくれる人がいた。
……何が不満なんだ?
親切に教えてくれる人がいた。
……何が不満なんだ?
734デフォルトの名無しさん
2019/10/01(火) 21:25:17.92ID:8eIOCDAd 何がお怒りのなのかさっぱりですけどw
735デフォルトの名無しさん
2019/10/01(火) 21:31:30.87ID:8eIOCDAd よくわからないが、他の言語で
func()
と
a = func()
で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが
てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません
func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718で
関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
func()
と
a = func()
で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが
てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません
func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718で
関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
736デフォルトの名無しさん
2019/10/01(火) 21:52:27.77ID:fust4gpU すべての言語はそれぞれ違っているんだが、
同じ言語がほしいのか?
同じ言語がほしいのか?
737デフォルトの名無しさん
2019/10/01(火) 21:57:08.01ID:Ueonb/Q5 みんな違って
みんないい
まつお
みんないい
まつお
738デフォルトの名無しさん
2019/10/01(火) 22:01:17.19ID:8eIOCDAd739デフォルトの名無しさん
2019/10/01(火) 22:14:23.82ID:8eIOCDAd そうだ、ksh(zsh)ならreadでと思ったら、逆に遅くなるのね
hoge | read a
サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに
あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
hoge | read a
サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに
あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
740デフォルトの名無しさん
2019/10/01(火) 22:58:18.96ID:9HRGRt02 for ループは、while よりも遅いだろ。
bash も、dash よりも遅いだろ
ループでは、for, bashを使わない方が速い
bash も、dash よりも遅いだろ
ループでは、for, bashを使わない方が速い
741デフォルトの名無しさん
2019/10/01(火) 23:34:09.29ID:DttT1lmW returnが返り値ってw
あれはエラー情報だろ
例外と同じ。
あれはエラー情報だろ
例外と同じ。
742デフォルトの名無しさん
2019/10/01(火) 23:35:42.98ID:DttT1lmW パイプで処理をつなげていくシェルスクリプトにおいて
返り値=出力なんだよ
出力を読み取って、処理して出力する
そういう基本がわかってないだけ
返り値=出力なんだよ
出力を読み取って、処理して出力する
そういう基本がわかってないだけ
743デフォルトの名無しさん
2019/10/01(火) 23:53:15.78ID:8eIOCDAd return
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
744デフォルトの名無しさん
2019/10/01(火) 23:59:02.30ID:8eIOCDAd function name () { }
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w
>>742そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w
>>742そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
745デフォルトの名無しさん
2019/10/02(水) 00:19:13.78ID:DWeKr+Az746デフォルトの名無しさん
2019/10/02(水) 00:20:54.57ID:238K9SSk マジで言ってるの?もっと勉強しよう、他人にアタるならw
747デフォルトの名無しさん
2019/10/02(水) 00:20:59.41ID:DWeKr+Az アセンブラでもreturn(RET)がある。
これも戻るという意味なだけ
呼び出し元に何かを戻すという意味はない
これも戻るという意味なだけ
呼び出し元に何かを戻すという意味はない
748デフォルトの名無しさん
2019/10/02(水) 00:23:56.96ID:238K9SSk アセンブラでもマクロアセンブラはあったりするけどな
戻り値をどういう形態で(どのレジスタにとか)という決まりであれば
>呼び出し元に何かを戻すという意味はない
マジで言っているの?アホらしい
戻り値をどういう形態で(どのレジスタにとか)という決まりであれば
>呼び出し元に何かを戻すという意味はない
マジで言っているの?アホらしい
749デフォルトの名無しさん
2019/10/02(水) 00:25:12.52ID:DWeKr+Az750デフォルトの名無しさん
2019/10/02(水) 00:26:09.34ID:DWeKr+Az https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_24
returnの説明にも、nは終了ステータスと書いてある。
return valueとは書いていない
returnの説明にも、nは終了ステータスと書いてある。
return valueとは書いていない
751デフォルトの名無しさん
2019/10/02(水) 00:30:13.30ID:238K9SSk752デフォルトの名無しさん
2019/10/02(水) 01:32:56.67ID:o4tQ0hze >>735
よく分からないで批判する癖は辞めた方が良い
よく分からないで批判する癖は辞めた方が良い
753デフォルトの名無しさん
2019/10/02(水) 01:35:11.54ID:o4tQ0hze >>751
機械語にreturnに類する語は出てこないぞ?
機械語にreturnに類する語は出てこないぞ?
754デフォルトの名無しさん
2019/10/02(水) 01:35:40.52ID:238K9SSk 「よくわからない」が何を指しているのか「よくわからない」だろう?
また単なる「語」に食いつくwいつものかとしか思えません
また単なる「語」に食いつくwいつものかとしか思えません
755デフォルトの名無しさん
2019/10/02(水) 01:36:26.76ID:238K9SSk756デフォルトの名無しさん
2019/10/02(水) 01:39:39.82ID:238K9SSk757デフォルトの名無しさん
2019/10/02(水) 01:53:53.42ID:o4tQ0hze いつもの妄言を喚いて自分の敵は一人だと思い込んでる痛い奴だったか
758デフォルトの名無しさん
2019/10/02(水) 01:55:39.44ID:238K9SSk 敵www
そういう姿勢だったのね。そうだよね、あなたはw
そういう姿勢だったのね。そうだよね、あなたはw
759デフォルトの名無しさん
2019/10/02(水) 02:46:06.49ID:JFJLbhDm IDが変わっても判別しやすいのはいいこと
ぼんやりしてて助かる
ぼんやりしてて助かる
760デフォルトの名無しさん
2019/10/02(水) 02:51:03.64ID:o4tQ0hze >>758
いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
761デフォルトの名無しさん
2019/10/02(水) 02:58:29.05ID:238K9SSk762デフォルトの名無しさん
2019/10/02(水) 03:24:37.13ID:DWeKr+Az 知らないなら言わなければいいのにw
RET命令(Return from Procedure)
http://softwaretechnique.jp/OS_Development/Tips/IA32_Instructions/RET.html
RET命令(Return from Procedure)
http://softwaretechnique.jp/OS_Development/Tips/IA32_Instructions/RET.html
763デフォルトの名無しさん
2019/10/02(水) 03:28:45.47ID:238K9SSk764デフォルトの名無しさん
2019/10/02(水) 03:43:25.73ID:DWeKr+Az 同じだだろ。何いってんの?
略だから違うんだって言いたいの?
略だから違うんだって言いたいの?
765デフォルトの名無しさん
2019/10/02(水) 03:44:26.53ID:o4tQ0hze >>762
そしてそれはアセンブリ言語という..
そしてそれはアセンブリ言語という..
766デフォルトの名無しさん
2019/10/02(水) 03:46:58.80ID:DWeKr+Az シェルスクリプトのreturnは終了ステータスを返すもので
これは他の言語の返り値ではないのは一目瞭然なんだがね
だからこそ $_ という変数(外部コマンドを呼び出した時の終了ステータス)で
アクセスできるわけだし
しらないならシェルスクリプトを勉強してくださいって言うしか無いな
なんならbashのドキュメント引用しようか?
return [n]
指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最後に実行したコマン
ドの返却ステータスになります。 関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行
中である場合、 シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの
終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で . によるスクリプトの実行中以
外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 RETURN トラッ
プ に設定されたコマンドが実行されます。
これは他の言語の返り値ではないのは一目瞭然なんだがね
だからこそ $_ という変数(外部コマンドを呼び出した時の終了ステータス)で
アクセスできるわけだし
しらないならシェルスクリプトを勉強してくださいって言うしか無いな
なんならbashのドキュメント引用しようか?
return [n]
指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最後に実行したコマン
ドの返却ステータスになります。 関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行
中である場合、 シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの
終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で . によるスクリプトの実行中以
外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 RETURN トラッ
プ に設定されたコマンドが実行されます。
767デフォルトの名無しさん
2019/10/02(水) 03:47:32.93ID:DWeKr+Az768デフォルトの名無しさん
2019/10/02(水) 03:49:09.36ID:238K9SSk >>764
マジか
残念ながらが同一人物に見えるとやはりなお思ってしまうよw
マジか。そんなんで偉ぶるwなんの意味があるのだかさっぱり
そもそもマシン語ではない、アセンブリ=ニーモニックだし。ニーモニック命令は3文字にという昔の風習なだけだろうに
豆知識
そもそも、そんなRETでもいいけどReturnすらないCPUもある。POPしてジャンプという
なんだかなあ
マジか
残念ながらが同一人物に見えるとやはりなお思ってしまうよw
マジか。そんなんで偉ぶるwなんの意味があるのだかさっぱり
そもそもマシン語ではない、アセンブリ=ニーモニックだし。ニーモニック命令は3文字にという昔の風習なだけだろうに
豆知識
そもそも、そんなRETでもいいけどReturnすらないCPUもある。POPしてジャンプという
なんだかなあ
769デフォルトの名無しさん
2019/10/02(水) 03:55:47.57ID:238K9SSk770デフォルトの名無しさん
2019/10/02(水) 04:19:21.82ID:238K9SSk771デフォルトの名無しさん
2019/10/02(水) 06:38:15.47ID:Ge1fP5ct シェルスクリプトはシェルスクリプトだっていってんのに
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!
といわれても、
うんじゃあ、シェルスクリプトを使えるように、シェルスクリプトの勉強をしましょうか?
としか言えんわなw
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!
といわれても、
うんじゃあ、シェルスクリプトを使えるように、シェルスクリプトの勉強をしましょうか?
としか言えんわなw
772デフォルトの名無しさん
2019/10/02(水) 07:03:56.09ID:R26grXOk アセンブラじゃなくて機械語だってすごいよなw
773デフォルトの名無しさん
2019/10/02(水) 08:47:07.26ID:238K9SSk >>771
どう読んで、そう思っているのか??
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!なんてこれっぽっちも言ってないけど
他の言語の関数とはやっぱ違う他の言語の関数と同じようにはできないねというだけだが?端的には>>735と所詮コマンドということ
POSIXとしてもfunctionと名乗ってるけど、一般的=他の多くの言語のfunctionとは違うfunction、functionというよりコマンドだなやっぱちう
それがシェルスクリプトのfunctionで他の言語のfunctionとは違うって強く俺に言いたいんですかね?
いいよ、めんどくさいから読まなくても。レスするのもめんどくさいからw
>>772
まあ、そういう意味じゃないんだけどね(どういう意味のレスなのかイマイチだがw)
マクロアセンブラがあるようにアセンブラはどのようにもできる、やろうと思えば。縛りはそこじゃなくて、機械語だなという
また、機械語になんて関数なんて概念ないからねって話にも膨らむのになというw
どう読んで、そう思っているのか??
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!なんてこれっぽっちも言ってないけど
他の言語の関数とはやっぱ違う他の言語の関数と同じようにはできないねというだけだが?端的には>>735と所詮コマンドということ
POSIXとしてもfunctionと名乗ってるけど、一般的=他の多くの言語のfunctionとは違うfunction、functionというよりコマンドだなやっぱちう
それがシェルスクリプトのfunctionで他の言語のfunctionとは違うって強く俺に言いたいんですかね?
いいよ、めんどくさいから読まなくても。レスするのもめんどくさいからw
>>772
まあ、そういう意味じゃないんだけどね(どういう意味のレスなのかイマイチだがw)
マクロアセンブラがあるようにアセンブラはどのようにもできる、やろうと思えば。縛りはそこじゃなくて、機械語だなという
また、機械語になんて関数なんて概念ないからねって話にも膨らむのになというw
774デフォルトの名無しさん
2019/10/02(水) 09:15:47.03ID:gGwgwb6G 俺はたぬきしか知らないなんて言ってない!
みかんはたぬきとは違う!
みかんはたぬきとは違う!
775デフォルトの名無しさん
2019/10/02(水) 09:19:32.36ID:R26grXOk 機械語に関数の概念が無いってすごいよなw
776デフォルトの名無しさん
2019/10/02(水) 09:23:09.06ID:238K9SSk めんどくせえなあ。とんちんかんな変すぎるレスいらんw
知らなかったのはサブルーチンとして使うのと関数として使うのにコストの差が思った以上にあったというだけだな。functionなんだからそんなに差が無いようになんかあるだろうと思い込みによる
それだけだよ
別にだから関数のように使わないとも言わんし、いままでも使ってるし変わらずに使うけど
知らなかったのはサブルーチンとして使うのと関数として使うのにコストの差が思った以上にあったというだけだな。functionなんだからそんなに差が無いようになんかあるだろうと思い込みによる
それだけだよ
別にだから関数のように使わないとも言わんし、いままでも使ってるし変わらずに使うけど
777デフォルトの名無しさん
2019/10/02(水) 09:25:03.86ID:238K9SSk■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【毎日スクープ】高市の「存立危機事態」発言、午前3時に官僚を叩き起こしてカンペを作らせてたのにガン無視して出たうっかり発言だった [314039747]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
