シェルスクリプト総合 その30

■ このスレッドは過去ログ倉庫に格納されています
2019/07/01(月) 23:04:27.02ID:/rKj5XUf
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/
2019/07/12(金) 19:39:49.25ID:gpn1wbN7
Plan 9も最初からGPLで公開していればLinuxと肩を並べてたかもね
2019/07/12(金) 20:39:39.59ID:fylm51D9
>>218
FPU制御レジスタをFLDCW命令で変更すると計算精度や丸め方向が設定でき、同じ命令でも動作が変わる
プログラムが明示的に設定しなければ、当然OSが設定した値になる
230デフォルトの名無しさん
垢版 |
2019/07/13(土) 10:28:41.44ID:H4ToI7wx
>>223
こういうの見るといつも思うんだけど、全部Perl(など)で全部完結して書くのとどっちがいいのかな?
殊に「高速で」条件があるなら。
2019/07/13(土) 10:36:29.63ID:006l8Xk5
>>230
パイプ有利でしょ
なぜなら perl は C の 10% 程の速度
シェルスクリプトの基本ツールは C で書かれているから早い
そしてパイプは並列プログラミングだ
2019/07/13(土) 10:51:01.49ID:Q8eoyE6C
並列「プログラミング」ではないな
単に仕組みとしてプロセスが同時並行しているだけで
2019/07/13(土) 13:12:58.10ID:PcwCdG6p
>>230
どうでもいいけど
>>223は基本的なコマンドで完結してるシェルスクリプトなので
Perlで「全部完結する」というのは対比する表現としてはちょっとおかしく思えるな
2019/07/13(土) 14:39:07.51ID:4CNtNVmB
単機能のコマンドを組み合わせて処理するのがシェルスクリプトだからな
それで速度が遅いだの言うならシェルスクリプトなんか使わなければいい
235デフォルトの名無しさん
垢版 |
2019/07/13(土) 16:01:43.14ID:Lat3oh38
>>223
uniq -cの前にsortしなくていいの?
2019/07/13(土) 16:32:06.44ID:006l8Xk5
>>235
別のところで動かしたらだめだったよ
sort 必要
2019/07/13(土) 16:34:17.14ID:006l8Xk5
ソートはたぶん早くないから
つまりコストが高いから
たぶん定番のあれやったほうがいい

1行ずつ読みこんだそれでハッシュ作って インクリメントしてくあれ
2019/07/13(土) 18:44:37.37ID:Wy302ne8
実はPOSIX sortならsort -uでuniq | sortと同等ことができるのでuniqは実質要らない子
2019/07/13(土) 19:00:08.87ID:Q8eoyE6C
uniqは重複したのを抽出する目的での利用が多いな
純粋にuniqで使う機会の方が極端に少ない
2019/07/13(土) 19:23:10.38ID:56OavmE8
uniq | sortって使い方分かってない奴かよw
uniqくらいソース読んでみなよ
2019/07/13(土) 19:38:16.75ID:Wy302ne8
>>240
そんな揚げ足取らんでも。。。
sort | uniqの間違いです。
2019/07/13(土) 20:35:19.67ID:yaak8A3v
ls .-lのrwxに8進数表記も追加できないかな
2019/07/13(土) 22:25:11.39ID:h6vp2MpA
こんな感じかな

https://wandbox.org/permlink/O0PwxkOoTDVfsMQ9

# スクリプトを直接書いて投稿すると 403 エラーになるな…
2019/07/13(土) 22:28:56.59ID:h6vp2MpA
あ、setuid/setgid/sticky bit のこと忘れてたわ
245デフォルトの名無しさん
垢版 |
2019/07/13(土) 22:47:31.71ID:YCgasS9+
find ~TEST -type f -printf "%h\n" |sort |uniq -c
これは早いわ
2019/07/13(土) 23:30:54.16ID:yaak8A3v
duのファイル版は俺も作ったけど未熟なんでこんな出来に
find ./ -type d -printf "%p " -exec bash -c 'ls -b "{}" | wc -l' \; | sed -r 's/(.* )(\w+)/\2\t\1/g'
2019/07/13(土) 23:43:20.86ID:PcwCdG6p
>>246
見易くていいね!
2019/07/14(日) 00:22:33.01ID:KitiOp9Q
>>244
https://stackoverflow.com/questions/1795976/can-the-unix-list-command-ls-output-numerical-chmod-permissions
awkで頑張れば4桁表示できるらしい
2019/07/14(日) 02:01:57.73ID:ygf6VvPi
>>207
Ruby の、1-liner で、特定のディレクトリ以下を再帰的にたどりながら(find)、
ディレクトリ以外(reject)を表示する。
%Q("〜") は、" を、Windows のPowerShell に解釈させないために、クォートする

-r で、pathname モジュールを読み込む

ただし、途中で改行しているけど、実際には改行しないで下さい!

ruby -rpathname -e 'Pathname( %Q("C:/Users/Owner/Documents/Ruby/test") ).find
{ |path| if File.directory?( path ) then; puts path, path.children.reject( &:directory? ).length end; }'

出力
C:/Users/Owner/Documents/Ruby/test
11
C:/Users/Owner/Documents/Ruby/test/a
4
C:/Users/Owner/Documents/Ruby/test/a/b
0
2019/07/14(日) 06:45:35.11ID:GSQZGuhE
stat -c '%A %U %G %z %n' .*
↑こういうのどう? lsのパーミッション表示を8進数に
まあPOSIXに規定されてないけど
2019/07/14(日) 10:08:35.55ID:niuQOGKU
>>245
sort を差し替えた
~/ 対象にしたら倍速

find ~/ -type f -printf "%h\n" | perl -ne '$dirs{$_} += 1; END{for $key (keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
2019/07/14(日) 10:11:35.12ID:niuQOGKU
途中だった
最後に | sort -k 2,2 入れても入れなくてもあまり変わらない
やはり指数関数的にsort に大量渡すと遅くなる
2019/07/14(日) 12:30:16.97ID:GSQZGuhE
LANG=Cでやってみ。
254デフォルトの名無しさん
垢版 |
2019/07/14(日) 13:29:14.61ID:VYOKuUQn
POSIX の find って -printf がないのな。
難しいことは -exec でなんとかしろということか。
255デフォルトの名無しさん
垢版 |
2019/07/14(日) 13:32:10.29ID:VYOKuUQn
>>252
perl の中で sort やれば良いのでは?
sort keys %dirs にして。
256デフォルトの名無しさん
垢版 |
2019/07/14(日) 14:08:00.15ID:Vo3Tn1vW
Perlようわからんけど、findのところもまとめていわゆるVisitorパターンでやると?
シェルだと時間掛かる。
#!/bin/bash
shopt -s dotglob
walk() {
local c=0
for p in "$1"/*; do
if [ -d "$p" ]; then
walk "$p" # recursive call
elif [ -f "$p" ]; then
((c++))
fi
done
echo "$1: $c"
}
start_dir=$(basename "$1")
walk "$start_dir"
2019/07/14(日) 14:15:10.09ID:niuQOGKU
>>255
そうだね
さらにちょっと早くなった
2019/07/14(日) 15:14:56.46ID:GSQZGuhE
どうせPerl使うんならPerlに用意されているfindコマンド的な関数使えばいいのに。
いや正直Perl書けないので外部コマンドのほうが効率いいのかも知れんけど
2019/07/14(日) 15:43:17.08ID:niuQOGKU
今回たまたま perl が早かったのは
>237
ということ
つまり C は10倍ぐらい早いけど
何十倍も無駄なことやってたら遅くなってしまう

高速な find の出力を |sort |uniq -c したら一応答えでるけど
そのsort がウルトラ処理多い
だったらperl で1行ずつ読んで正しいアルゴリズムで処理したほうが早いだけ
2019/07/14(日) 16:48:51.97ID:XOVWGW1L
perlでソートしてないから
2019/07/14(日) 19:10:07.29ID:BEvjoRaR
なんだperlでソートしたら遅いのか
262デフォルトの名無しさん
垢版 |
2019/07/14(日) 19:11:22.06ID:AAGaqnKC
>>227
Plan無いん
263227
垢版 |
2019/07/14(日) 20:00:20.57ID:QmWR+pGh
>>262
GJ!
2019/07/14(日) 20:02:48.24ID:XOVWGW1L
awk版。ディレクトリ名でソートするなら sort -k2

find . -type f -exec dirname {} + | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
2019/07/14(日) 20:08:54.86ID:XOVWGW1L
xargs使ったほうが良いかな

find . -type f | xargs dirname | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
2019/07/15(月) 08:12:50.57ID:jP+0UVPX
どうせなら計測結果も付記してくれよ
267デフォルトの名無しさん
垢版 |
2019/07/15(月) 10:56:15.79ID:Ww8nr7y5
やってることが同じなら、Perlとawkは比較するまでもないのでは?
2019/07/15(月) 12:22:56.47ID:E9YINa1F
数分で書けるのがシェルスクリプトの良いところなんだし
数百万のファイルを何分以内で処理せよとか性能要件があるなら
そもそもシェルスクリプトなんかで書かないわ
269デフォルトの名無しさん
垢版 |
2019/07/15(月) 15:08:49.68ID:3UWFYY1V
高速化するならC言語使うな。
2019/07/15(月) 16:42:34.21ID:jP+0UVPX
なんかシェルスクリプトを貶す人間ってシェルスクリプトを本来の目的とは違う方法で使った結果失敗して
その恨みを自分の無能さではなくシェルスクリプトにぶつけてる印象。
2019/07/15(月) 16:46:57.72ID:tvlJQJn9
このパーツは意外と頻度多いからCで書いておいてもいいかもね
| perl -ne '$dirs{$_} += 1; END{for $key (sort keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
2019/07/15(月) 19:25:46.44ID:jP+0UVPX
端末の応答(例えば$ printf '\e]11;?\e\\'で返ってくる\e]11;rgb:〈赤〉/〈緑〉/〈青〉\e\\っていう文字列)を
sedやらなにやらで加工できるように標準出力に流したいんだど
そのままの状態だと端末そのものに文字列が渡ってしまって加工できない。
$ printf '\e]11;?\e\\' | od
みたいにすると(当然だけど)\e]11;?\e\\という文字列がパイプを通ってしまう。

個人的にはsttyとかをうまくやりくりしたらいけそうな気もするのだけど
そういう文書や記事がないのと俺があまり端末の処理に詳しくないのとで今のところ成功していない。
端末応答を標準出力として処理できる方法知らないですかね。
2019/07/15(月) 19:47:51.35ID:iDG/5azN
>>272
色というものが何者かわかってないんじゃね?

色を付けるためのエスケープシーケンスっていうのは、
エスケープ文字、ASCIIコード表でESC(0x1B)の文字8進数だと033
ESC文字から始まる一連の文字列の流れ(シーケンス)ってだけだよ
だから0x1Bで始まるその文字列を加工すりゃ良い。

\e]11;の ]11;は単なる文字だけど、\eは(シェルによりけりだが)
0x1Bの文字に置き換わる。だからsedなんかで\eを見つけようとしてもだめ
そんな文字列は流れてこないんだから
2019/07/15(月) 19:59:18.87ID:jP+0UVPX
>>273
あー。いやそうじゃなくて 端末の応答を取得したいんよ。
試しに
$ printf '\e]11;?\e\\'
ってやってみて。多分端末の上に
^[]11;rgb:0c0c/0c0c/0c0c^[\
みたいな文字列が表われる。
この文字列をtestコマンドの対象にしたりしたい。
でも普通の方法ではこの文字列は標準出力ではなく端末の上に直接出力されてるから
そういう加工ができない。
2019/07/15(月) 20:00:57.13ID:iDG/5azN
>>274
話の内容を単純化しよう。
文字の内容は今どうでもいい話だろ?

printf 'hogehoge' ってやってみたら
端末の上に、hogehoge って表示されるな?

それでこの文字列をどうしたいって?
2019/07/15(月) 20:20:16.67ID:f1G4msuO
わかってない奴が話に絡んでいくなよ
文字列なんか関係ない
奴はttyの出力(もしくは入力)を横取りしてパスワードを盗みたいという話をしてる
2019/07/15(月) 20:21:36.85ID:iDG/5azN
$ printf '\e]11;?\e\\' の話だろ?
2019/07/15(月) 21:13:36.27ID:f1G4msuO
ぜんぜん違う
2019/07/15(月) 21:15:41.25ID:iDG/5azN
>>278
試しに
$ printf '\e]11;?\e\\'
ってやってみて。
2019/07/15(月) 21:21:51.85ID:qldwvqW5
>>276
パスワードだとしたら、出力には返ってこないから横取りもできないんじゃね
パスワード生で出力するようなアレでなければ
2019/07/15(月) 21:35:01.81ID:f1G4msuO
>>280
だから入力って書いたじゃん
エコーバックやめるタイミングを捕まえて入力側をだな
まあいいや、俺も答え知らないしw
2019/07/15(月) 21:42:13.41ID:qldwvqW5
>>274
そういうのが出る Terminalアプリ もあるし出ないのもある
Terminalアプリが出しているんでしょ、その エスケープシーケンスを Terminalの画面制御 のために
Terminalアプリの作りによるんじゃないかなあ、また、Terminalアプリで何か提供してなきゃダメなんじゃないかなあ

>281
そもそもは出力をだから出力で入力をは無理だな。エコーバックは今時はローカルではしてないんじゃね、パスワードを生で表示だろしw
2019/07/15(月) 22:20:41.82ID:qldwvqW5
なんのエスケープシーケンスなのか知らずにだったが、OSC Operating System Commandつうのね。で、制御ではなくてリポート(情報)なのね
Teminalアプリは、それを相手(シェルプログラム)への入力として出力しているのでできそうか
2019/07/15(月) 22:24:08.87ID:EBIcrGzb
ls結果をテキストエディタで開いた時[0mだらけで焦った思い出
ANSIカラーコードって正規表現で消せるのかしら
2019/07/15(月) 22:38:58.41ID:tvlJQJn9
消してみた
ほぼ消えたといって問題ないのでは?
https://i.imgur.com/rV7A7JG.jpg
2019/07/15(月) 22:54:17.82ID:qldwvqW5
>>274
#!/bin/bash
result=''
printf '\e]11;?\e\\'
while read -s -N 1 -t 0.2 char
do
result="$result$char"
done
printf "%s" "$result" > hoge

試行錯誤中だけど、こんなんで取れてる
2019/07/15(月) 22:55:24.82ID:jP+0UVPX
>>275
その文字列はパイプで処理できるじゃん。
例えば
$ printf 'hogehoge' | sed -e 's/hoge/fuga/'
でも端末応答の文字列はそういう処理ができないのよ。
試してみると分かる。
2019/07/15(月) 22:59:10.56ID:jP+0UVPX
>>286
すげえ!ありがとう!
なるほどなぁ。readコマンドで対処するのか……。
全然文字列が取得できなくて悩んでたからマジで助かったわ。
2019/07/16(火) 01:24:24.20ID:b8YViJ87
こんな感じかなぁ

$ stty -echo;printf '\e]11;?\e\\'; IFS=';' read -r -d '\' _ bgcolor;stty echo
$ echo $bgcolor
rgb:3232/3232/3232
2019/07/16(火) 01:27:52.36ID:b8YViJ87
あ、尻尾に ESC(0x1b) が付いてるから適当に削ってちょ
2019/07/16(火) 02:07:13.54ID:6ZdisLnD
>>290
末尾のESC \は端末が返す文字列の仕様だから問題ないと思う。
というか応答の形式が
ESC ] 11;rgb/3232/3232/3232 ESC \
↑こういう感じ。
2019/07/16(火) 16:37:09.91ID:6ZdisLnD
シェルスクリプトでラムダ計算を実装するとしたらどんなインターフェースがいいんだろう。

lambda -x @ 'echo @ | tr "[A-Z]" "[a-z]"'
でもこれだとこの後に適用したい変数を持って来たときにlambdaコマンドの引数と見分けがつかなくなる…。
2019/07/16(火) 16:40:13.19ID:cpfSTA9t
パイプつなげるのが普通だから
xargs とか
なんか {} みたいなのでこれまでのパイプの流れてきたのを表現する
コマンドがあったからそれでいいんじゃないか?
2019/07/16(火) 16:55:42.40ID:zaQ9s3Gk
>>292
何が問題なのかわからんけど、

1. ラムダ計算だとしてlambdaコマンドに引数なんているの?
2. 'echo なんたら' の前がlambdaコマンド引数、後ろがechoの引数でいいだろ?
3. 'echo なんたら' で区切れない場合、-- で区切るのがよくある実装方法

って言っておくよ
2019/07/16(火) 17:34:51.11ID:6ZdisLnD
>>293
そうそう。xargsみたいなのを妄想してるw
2019/07/16(火) 19:39:35.56ID:6ZdisLnD
>>294
例えばPython3のラムダ計算だと
(lambda x: x * x)(3)
みたいな形式じゃん。
キーワードlambdaをコマンド
変数宣言x:を、どんな変数を扱うかというオプション
(xargsで言う-I)
演算本体のx * xは被演算子
としてみた。
297デフォルトの名無しさん
垢版 |
2019/07/17(水) 23:26:41.26ID:ySrAQEz0
このラムダ計算は偽物だ。食べられないよ。
また明日来てください。僕が本当のラムダ計算をお見せしますよ。
2019/07/17(水) 23:47:22.37ID:ycSiezB+
このラムダは食べられないよ。ラムダこりゃ〜
2019/07/17(水) 23:56:54.05ID:Lq1+nMLH
>>297
楽しみにしております ^ ^;
300デフォルトの名無しさん
垢版 |
2019/07/18(木) 11:57:22.02ID:BkvY1rKv
>>297
本物のラムダ計算はよ。
2019/07/18(木) 11:58:54.05ID:832IkKkF
いくら待ってもムラダ。
2019/07/18(木) 14:21:32.04ID:BkvY1rKv
なんだ虚勢だったのか。
2019/07/18(木) 17:02:47.87ID:ugDCzjFC
シェルスクリプトでラムダ式ってどんな場面で便利なの?
普通に関数定義すれば事足りると思うんだけどな
2019/07/18(木) 17:23:35.77ID:vfPv5uwZ
https://www.sejuku.net/blog/23677#lambda
> #lambda式を使わずに通常の関数を用いる場合
> def func(price,tax):
> return price + (price * tax)
>
> payment1 = func(100,0.08)
> print(payment1)
>
> #lambda式を用いる場合
> print((lambda price,tax:price + (price * tax))(100,0.08))

よくわからんのでコレをサンプル。

price?tax? シェルスクリプトにとって引数とは$1, $2,・・・固定なんだよな。省略かな?w

echo "$(lambda '$1 + ($1 * $2)' 100 0.08)"

イメージ的にはこんな感じか。少数の計算があるんでbc使わなきゃいけないので動くように直すと

lambda() {
formula="$1"
shift
echo "$(eval "$formula")"
}
echo "$(lambda 'echo "$1 + ($1 * $2)" | bc' 100 0.08)"

一発で普通に動いたわw

シェルスクリプトにとって戻り値=出力なんでこうかけるし、
あとbcの使いづらいのをどうにかすればこんな感じでかけるだろう
lambda 'calc "$1 + ($1 * $2)"' 100 0.08
2019/07/18(木) 17:25:39.32ID:Nv4mVpEC
bash の mapfile にある callback みたいなもん?
2019/07/18(木) 19:06:15.61ID:ugDCzjFC
数値計算ならbcに直接渡すし
文字列を加工するラムダ式はbcで処理できないし
必要性を感じたことないんだよね
2019/07/18(木) 19:08:03.03ID:BkvY1rKv
>>304
すごいけど
数値計算に限定されるのが残念な仕様だね。
2019/07/18(木) 19:17:03.16ID:DPDlMznj
>>307
へ?数値計算に限定するならもっとシンプルに書けるよ
これだけにできる

lambda '$1 + ($1 * $2)"' 100 0.08

数値計算に限定してないから呼び出し側にechoとかbcが埋め込まれてるんだけど?
2019/07/18(木) 19:21:15.11ID:DPDlMznj
lambda関数は>>304のままで小文字を大文字にする例

lambda 'echo "$1" | tr "a-z" "A-Z"' abc
2019/07/18(木) 19:28:37.52ID:DPDlMznj
ラムダで用いる計算式は通常短くなるから、
$1, $2 であっても分かりづらくなることはないだろうが
もともとの人は変数をどうすべきかって言ってたから書くと

lambda 'calc "$1 + ($1 * $2)"' 100 0.08

lambda v1 v2 -- 'calc "$v1 + ($v1 * $v2)"' 100 0.08

ってやろうと思えばやれる。変数に入れてからevalすればいいだけだから
それが>>294で書いたこと。--で区切るのが面倒だと思えばこういう書き方もありだろう

lambda v1:v2 'calc "$v1 + ($v1 * $v2)"' 100 0.08

第一引数が:で区切られた変数名、第二引数が計算式、残りが引数と簡単に見分けられる
2019/07/18(木) 19:41:15.10ID:DPDlMznj
数値限定で引数全てに計算式を適用して返す例(笑)

map() {
 formula="$1"
 shift
 while [ $# -gt 0 ]; do
  eval "echo \$(($formula))"
  shift
 done
}
map '$1 * $1' 1 2 3
2019/07/18(木) 19:53:59.13ID:ugDCzjFC
書き方が煩雑になるだけでメリットないんじゃね
やりたいこと素直に書けばいいじゃんって思ってしまう
2019/07/18(木) 19:54:42.45ID:DPDlMznj
まあ、それはラムダ計算そのものが言われていることだからw
シェルスクリプトの話ではないね。
2019/07/18(木) 20:03:10.85ID:ugDCzjFC
ラムダ式って簡潔に書けるのがメリットでしょ
コード量増えるのなら本末転倒だよね
2019/07/18(木) 20:09:12.09ID:DPDlMznj
簡潔に書けてるよw

map '$1 * $1' 1 2 3

ただ違うのはシェルスクリプトにはそれようのライブラリがないだけ
ここで例示したようなmapみたいなライブラリ集ができたら
もっと便利になると思う
2019/07/18(木) 20:15:16.65ID:DPDlMznj
というか、普通の言語のラムダ式だと、こんな感じで変数が出てくるけど

lambda a, b : a + b

引数名が$1, $2と数字固定だから変数宣言が不要になるんだよな

lambda a, b : a + b がシェルスクリプトだと
lambda '$1 + $2' だけになっちゃう

i = (lambda a, b: a + b)(1, 2) はシェルスクリプトだと
i=$(lambda '$1 + $2' 1 2) こうなる
2019/07/18(木) 20:17:43.55ID:ugDCzjFC
クロージャの概念がないシェルスクリプトは
ラムダ式の真価を発揮する場面は無いだろうね
2019/07/18(木) 20:22:14.60ID:DPDlMznj
無いっていうのは出来ないんじゃなくて
用意されてないって意味だけどな

実はPOSIX標準でも一つだけクロージャーが使われてる。
それがtrap

trap 'echo trapped; exit 1' INT

みたいな書き方ができる
2019/07/18(木) 20:55:40.78ID:BkvY1rKv
ていうか(ほぼ暴論だけど)シェルスクリプトだってオブジェクト思考っぽいことはできる訳だし
単に「向いている処理」「向いていない処理」があるってだけ。

シェルスクリプトでラムダ式は書けるけど、シェルスクリプトはラムダ式を扱うのには向いていない。
2019/07/18(木) 21:16:40.14ID:DPDlMznj
そんな難しく考えるなよw
trapの例もあるんだし、使うのが適切な場合に使えば良いいんだよ
2019/07/18(木) 21:28:25.20ID:KBi6m+gV
map は意外と使い道がないんだよな
lisp 以外では意外と実装されていない
2019/07/18(木) 21:33:57.01ID:DPDlMznj
実装されてない言語のほうが珍しいだろw
2019/07/18(木) 21:36:48.83ID:DPDlMznj
mapがある言語

Python、Ruby、Perl、JavaScript、C#(LINQのSelect)
思いついたものだけ
2019/07/18(木) 21:42:27.79ID:ugDCzjFC
trapってただのイベントハンドラだよ
引数渡したり戻り値受け取ったりできないじゃん
2019/07/18(木) 21:52:45.54ID:DPDlMznj
trapはイベントハンドラじゃない。
シグナルに対してイベントハンドラを設定するもの

引き数渡したり戻り値受け取ったり出来ないのは
trapの制限であってイベントハンドラの制限じゃない
2019/07/18(木) 22:00:05.94ID:ugDCzjFC
言いたいのはクロージャの話してるのにtrap 持ってくるのは筋違いってことだ
2019/07/18(木) 22:03:45.58ID:DPDlMznj
別に筋違いでもない。戻り値は(標準)出力と上で書いたが、
trapで出力したものは画面に表示される。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。