シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。
スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured なにその勝手にやる気なくすなよw ほんとに身勝手だな、いつも通り
SIGINTはPOSIXだからな(なぞ)。そっち寄りのの人は普通に使ってしまうんじゃね。てか、んなの本題に関係ないだろうに、そんなこと言いたいのはわかるけどさ(なぞ) >>348
> なにその勝手にやる気なくすなよw
$ dash -c 'trap true SIGINT && echo v^_^'
trap: SIGINT: bad trap
$ dash -c 'trap true INT && echo v^_^'
v^_^ で?通じてるんでしょ?POSIX縛りなんてあったの?そういうのはやる気あるのねw ああ、ちなみに、
>SIGINTはPOSIXだからな(なぞ)
は、(3)だよ。知らないんだろうけど(>>347の最後のあたりからも、その>>349あたりからも) >>350
やる気ではなくて、POSIX縛りは必須要件なので
サブプロセスの標準エラー出力の件は、別の方法で解決できることなので
数値でも指定できるのは知ってる。trap SIGINTとかSIGINT抜けてたとか
かいてあるから、trap INT、INT抜けてただよって言ってるだけ また、後出しか。そんなレスしている目的は違うだろうw
いきなり「数値でも指定できるのは知ってる」とか??(3)に対して???
http://pubs.opengroup.org/onlinepubs/007904975/utilities/trap.html
(新しいドキュメントはどこだ?)
SIG付きもPOSIX仕様のようだけどなwオプションでも言及しているんだからPOSIXの仕様のひとつだろう
なんて、アホなやりとりしたいの? >いきなり「数値でも指定できるのは知ってる」とか??(3)に対して???
ああ、(3)がSIGINTの数値だと思ったのか。違うぞ2だぞ。(3)は C API という意味 なるほどSIGをつけた名前はPOSIXだが、ポータビリティではないってことか
echoみたいなもんだな シェルスクリプトのスレでC APIは関係ないですよね?
言ってること間違ってますか? だから最初は「(なぞ)」にしてたやん
>>347の最後あたりの応えとしてしかない。お前が変なツッコミするから悪い
ちなみに、>>353のPOSIXドキュメントでも (3) のことに言及しているのはどう思う?UNIX/Linuxはそんな境目はそれほど無いと思うけど。誰かみたいに(1)しか興味ない知らない人もいるだろうけど
単に知らなかっただけでいいのに、いつも偉そうにしているからドツボにはまってるように見えなくもないw > ちなみに、>>353のPOSIXドキュメントでも (3) のことに言及しているのはどう思う?
それが、シェルスクリプトだけのドキュメントじゃなくて、POSIXのドキュメントだからでしょう???
なにがいいたいんだか コマンドのドキュメントだよ。それもお前が大好きなPOSIXのw
いろいろ破綻しているように見えなくもない。落ち着けww >>358
その C API って何ですか?定義を教えてください >>362
言い出した本人 (>>354) に聞いてください
> ああ、(3)がSIGINTの数値だと思ったのか。違うぞ2だぞ。(3)は C API という意味 >>361
(俺は最初から)trapの引数にSIGINTは使えないことがあるって
話をしていること、わかってますか?
どうも勘違いして、突っ走ってる気がするな >>363
で?その目的がわからんな。単に素直な疑問なだけなら、>>348で応えているけど。話を振ってねちっこく続けているのは誰なの?>>349とか以後とか
それも>>353でお前は納得したんだろ?
なんか上でC++のことを偉そうにのたまっているのを誤爆したのお前じゃなかったっけ?
それがお前じゃなくても、なんでコマンド関連のCなんて簡単なのにそんなに知らないのか不思議だな、なんか異常にシェルスクリプト「だけ」に拘るのもあって
UNIX/Linux界隈では自分でCでコマンド書く(簡単なフィルタも)のも普通にいるだろうから、お前のようにシェルスクリプトだけしか言ってはいけないなんてないと思うけどな(それも俺からは単にお前の間違いをごまかすためだけにしか見えんからw)
>>362は俺に振ってもいいが、なにを聞いているのか傍目にもわからないw すまんが、も少し具体的に>>362 >>365
コマンド?
もしかして、trapがコマンドだと思ってる?
シェルビルトイン関数だよ
シェルのプロセスでシグナルを扱わなきゃいけないから
外部コマンドで実装することは不可能
だからシェルスクリプトスレでtrapの話をするならば
シェルスクリプト前提になるのは当然だろう? >>368
そういう細かいことは言いたいのね。大枠でコマンドでいいじゃん (1) の範疇なんだから
その二行目以降はイミフ。なにを言っているの?言いたいの?
お前から見てミスを論ってなんとかお前のなにかを保ちたいだけにしか見えない >>369
そのレスはなんのためにしたの?
なにかを保ちたいだけにしか見えない 結局SIGINTの振りも>>368と同じでなにかをなんとかしたかっただけだろなww
SIGINTで失敗したから、別のにか。懲りないなw >>370
なんか失点を挽回しようとしているのが透けて見えてるのでwww >>372
それで、trapの引数のSIGINTの話をしていたところに
C APIを持ち出してきたのはなんでですか?
失態隠しのためにそんなレスしてるんですかねw ID:gJfQRhUl0 がさっきから俺に言ってることって
全部自分の事になってるのわかってないのかな?
どうせ次言う言葉も、自分のことを棚に上げて言うんだろうな >>373,374
はあ?無茶苦茶やな
その答えはすでに応えているけど。「みんな SIG SIG 言ってるのに」のに対する応えを含めての
それも最初に。それも話の流れで、お前も納得勉強wになっただろうにww
よほど「お前のなにかを保ちたい」が琴線だったようだねえw >>376
さすがにその選択肢はない
この赤い奴らをNGすれば済む話
それすら嫌ならお前が消えろ、ここに来た経緯忘れんな シグナルを送信するコマンドの名前がsigとかじゃなくkillなのはなぜでしょうか。
例によって歴史的経緯? 元々はSIGKILLシグナルしか送信しなかったのでkillとか。 >>379
某農家「村を出てアイドルになるなんてとんでもねぇ、両立するべ」 ご想像どおり、version6 unix以前はkillしかできなかった模様 村に戻って親が死んでたら
そいつは手遅れコロスしかない
親はいつまでも待っていない >>304
それを言えるのは、まだ手遅れになってないからなんやで お題:スクリプトのシグナルを扱う外部コマンドを設計せよ こんな感じ?w
#!/bin/sh
trap "$(extcmd)" INT
[extcmd]
#!/bin/sh
cat <<HERE
handler() {
: なにかする
}
handler
HERE >>389
おお、なるほど。長っ探しづらと一瞥では思ったが系統だってのでこっちのがいいか
どうもです いや手遅れ
親がしんでたらゾンビスプロセスになる
殺すしかない UTF-8で符号化された文字列に対応してるfmt(1)コマンドってある?
GNU coreutilsのfmt(1)は無理だった。 一回のループでファイルや変数を使わずに、偶数行と奇数行にまとめられないかなぁ?
例えば、入力ファイルが以下のような場合
1
2
3
4
5
出力は、以下のようにしたい
2 # ここから偶数行
4
1 # ここから奇数行
3
5
ファイルディスクリプタをうまく使えばできるんじゃないか?
と思ってたりするけどうまくいかない >>395
sedでできるならsedでもいいけど。
やっぱり無理だよなぁ
結局、奇数行のデータを後からだすためには
どこかにためておく必要があるわけで
メモリかディスクはどうしても使用してしまう
二回のループにするなら、メモリもディスクも消費しないけど
今度は入力データをためておく必要がある >>393
もし変数を使っていいなら,どうやって書くの? >>397
こんな感じでは?
while 全行ループ; do
if 偶数行 then echo 偶数行
奇数行変数 = 奇数行変数 + 奇数行 + 改行
done
echo 奇数行変数 元データがファイルに入っていて2回読んで良くて尚且つ変数使って良いなら楽だよ、っていうかそれなら誰でも作れるかw 遅くなるのでディスクに書き込みたくないし、メモリも
あまり使用したくなかったんだけど仕方ないか
実際には偶数行、奇数行じゃなくて、データを種類ごとに前後に分けたくて
後ろに分けるデータは基本的に少ないってことがせめてもの救いか 何度も実行するものなので、遅いとストレスたまるから その理屈だと、
・バカなのにストレス溜まるの?(不思議)
・バカじゃないならストレス溜まる(普通)
ってことになるから、
バカやめたら、それこそストレス溜まるのでは? バカの理屈わろたw
バカなんやから考えん方がええで バカに言いかえすとか無理やわ理屈がないからバカなんやでおまえ そりゃね。>>404が正しいから何も言いえせないわなw 奇数行だけ抽出するスクリプトと
偶数行だけの二つ作って、
奇数行スクリプトの出力に偶数行のを追記させる
なんとなくそんなイメージ 速度言うならCなりJavaで書いてデーモン化して動かさんとな
シェルスクリプト特有のコマンド羅列のプロセス起動しまくりってのは
すごいコストがかかってる 偶数行抽出
grep "Kkuf6Nxk0"
奇数行抽出
grep "zOBF+lvD0"
楽勝すぎるわ >>404
いや普通なら落としどころ決めるだろ
シェルスクリプトだからあきらめるとか
ちゃんとした言語で作るとか
バカだから漠然と心配ばかりしてストレスが溜まる
今も月が落ちてくる心配でもしてるんじゃないの >>412
デーモンだって実行プロセスは立ち上げないとダメだろ >>413
シェルが固まったんやがウイルスちゃうやろな?直しかた教えろバカ >>413
後出しで奇数偶数じゃないって言ってるよ seq 5 | awk '{print ($1%2?"b":"a") $1}' | sort -V | cut -c2- >>414
普通(?)の言語で作ったって、結局は変数に入れないとだめでしょ
ファイルを受け取ってその順番を変えて出すんだから
キミは本質をわかってない >>412
シェルスクリプト(と一部のPOSIXコマンド)で作るっていうのは
必須条件なのでそれはできないのです。 >>413
結局はそれ、二回読み込んでるんだよね
>>418
それも考えたんだけど、結局はソートの
ためにメモリに読み込むから本質的には変わらないかなーと
あと>>393の例が良くなかったけど、入力ファイルは昇順とは限らなくて
偶数グループと奇数グループにわけるだけで、順番は変えたくないんだ >>421
バカじゃないので黙らないw
ってか、俺を黙らせるのは不可能なのでNGにして
俺にくだらないレスしないようにしてください
俺にもくだらない反論(?)が来ないのでWIN♪WIN♪ >>425
バカを嘲笑うのがおもろいのにNGにするわけないやろ
ホンマにバカやなおまえ ああもぅめんどくせぇなw 順番変えたくないなら stable sort でええやんけ
メモリがどーたらこーたらは知らんw
$ cat hogehoge | awk '{print ($1%2?"b":"a") "\t" $1}' | sort -s -k1,1 | cut -f2 じゃあなんで黙れって言ったの?
俺が書き込みしなきゃ、お前出てこれないじゃん
矛盾してるよね。 >>419
だから変数使えって言ってるんだよ
たいした理由も無いのに速度だリソースだって言ってるだけなんでしょ
だったら奇数用途偶数用を1回ずつ合計2回実行すればいいだけ だから仕方ないかって書いてんのにw
ほんと人の話読まないやつだな
400 自分:デフォルトの名無しさん (ワッチョイ ab98-QXT6)[sage] 投稿日:2018/11/01(木) 19:51:11.07 ID:Kkuf6Nxk0 [4/15]
遅くなるのでディスクに書き込みたくないし、メモリも
あまり使用したくなかったんだけど仕方ないか tee(1)コマンド使ったらいけるかなとか考えたが無理かな。 >>434
片方ファイルだもんね。
メインプロセス起動(出力を2つに分岐)
├出力1 偶数行表示プロセス実行
└出力2 奇数行表示プロセス実行(偶数行表示プロセス終了後に処理開始)
みたいな事ができるかな?と思ったんだけど
まあ、これでも内部的には出力がバッファに
溜め込まれてるんだろうけどね >>432
お前ホントバカだな
お前のようなバカのためにプログラム書いてやったぞ
eo-sort.exe
第一引数に入力ファイルを渡せば標準出力に
まず偶数業出してその後に奇数業出してくれる
必要ならそれをファイルにリダイレクトしなよ ああ、あと出し情報で偶数奇数じゃなかったんだよな
そりゃいらないわなw >>435
というかよく読んだら「ファイルディスクリプタをうまく使う」ってそういうことだよね
teeっていうのはファイルと標準出力に書き込む「ファイルディスクリプタをうまく使う」コマンドの一つなんだからさ。
まあ俺には変数使わずに出力を分けるのは無理かな。
ところで変数使わない理由はPOSIXシェルスクリプトは変数のスコープができず
利用者が定義している定数を潰す可能性があるからって理解でいいのかな? 印刷して紙でやればメモリもディスクも使わないんじゃね? じゃぁ moreutils の pee コマンドでも使ったら
$ cat hogehoge | pee 'awk "!(\$1%2)"' 'awk "\$1%2"' 同じターミナルに出力するのが仕様間違いだろ。スクロールバックがめんどくさい。 ■ このスレッドは過去ログ倉庫に格納されています