X



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

■ このスレッドは過去ログ倉庫に格納されています
0352デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:03:28.37ID:zUwJ78d6
× shoptとかもしらん
○ shoptとかもいらん

なんで当たり前の正解を言ったら
お前悔しがってんの?w

知識自慢したのお前じゃん
そして「は?」の意味わかっただろ。
全く見当違いのことをやろうとして、
全く見当違いの解答をしてるんだよ。
クソガキどもが
0353デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:09:13.03ID:2wE9GZDh
そりゃ、お前が悪い。shoptもな
なんかもったいぶってるだけでだからな。自覚がないのか?さんざん偉そう俺は初心者じゃないってだけの、質問から外れたことばっかり言っている
お前が>>349>>352で書けば終わってることだからな

俺は別にお前みたいな知識自慢したくてなんてないぞ。おまえがさんざん俺偉いというだけのような&「そうすれば正解にたどり着く」とかうやむやなこと言うからだろうに

とうとう、「クソガキども」のお言葉いただきましたっ。なんだじじいかw自称他人を自分より劣ると言える
0355デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:15:09.23ID:zUwJ78d6
だから何をやりたいのかわかったのは
それ以降のレス読んでからだろうが

意味不明だし、馬鹿がクソな回答しやがるし
ほんと低い
0356デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:17:21.45ID:2wE9GZDh
>だから何をやりたいのかわかったのは
イミフ。おまえもたいがい日本語ダがメだぞ?w いままでのレスの数々でも

やっぱり「俺高いお前低い」とは言いたいのね。なんでそう言いたいのか自分に問いてみような
0357デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:19:37.90ID:2wE9GZDh
ああ、「クソガキども」のお言葉いただいたので(なんでそんなこと言いたくなったのか自分に問いてみようなw)、もういいや
0358デフォルトの名無しさん
垢版 |
2019/04/25(木) 01:20:59.82ID:zUwJ78d6
> なんでそう言いたいのか自分に問いてみような

邪魔だからだな。頭悪そうな兄ちゃんがきて
頭悪そうな会話をしてる。そんな感じだ。
0360デフォルトの名無しさん
垢版 |
2019/04/25(木) 04:25:44.56ID:Q6RVSnnY
質問する側が馬鹿すぎると馬鹿を引き寄せるだけなんだよなあ。
まず、まともな質問をするために man を読もうよ。
0361デフォルトの名無しさん
垢版 |
2019/04/25(木) 09:00:30.11ID:XBKhyEHe
よくわからんが、なんで -f が出てくるんだ?
ファイルの有無が問題じゃないんだろう?
globしたかしないかが問題なんだろう?
0362デフォルトの名無しさん
垢版 |
2019/04/25(木) 10:40:29.00ID:xhj9dxYD
""で囲むと展開されなくて""で囲まないと複数の引数として認識するから出来ないので諦めますね
0363デフォルトの名無しさん
垢版 |
2019/04/25(木) 10:43:57.02ID:zUwJ78d6
>>361
globでファイル名に展開されるかどうかは
ファイル(ディレクトリなども含む)の有無で決まるから
0365デフォルトの名無しさん
垢版 |
2019/04/25(木) 13:29:45.25ID:wpotMNKo
そもそも、ファイル名に、半角英数字、- _ (base64url encoding)以外を使うような、
システムを作る奴が悪い

さらに、Windows では、大文字小文字だけが異なる、ファイル名も作れないし。
例、aB, Ab
0366デフォルトの名無しさん
垢版 |
2019/04/25(木) 14:58:23.69ID:zUwJ78d6
>>364
セキュリティホールを作るのは、
お前のように正しく理解してないからだよ。

問題が有るというのなら言ってみな。
0371デフォルトの名無しさん
垢版 |
2019/05/03(金) 15:34:52.90ID:m+FxQhlt
bashのさ、<() ってさ、sort test.txt みたいなのを sort <(cat test) って書けるから
リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
そうとはかぎらないよな?例えば、同じファイルを二回読み込むとかさ
そういうのってやっぱ一時ファイル作らないと無理だよな?
0372デフォルトの名無しさん
垢版 |
2019/05/03(金) 18:08:45.95ID:/bmAVHAq
>>371
パイプの概念がないのか?

sortコマンドもどこでどうなったのかを気にしないで使うというのもよくわからない。
0373デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:10:21.19ID:m+FxQhlt
>>372
知らんがな。俺に言うなや。
そのツールが、そうなってるんだから
sortコマンドはただの例だからこれ以上追求しなくていい

てか、複数ファイルを入力したり複数ファイルを出力したりすることだって
あるんだから、必ずパイプで解決できるわけじゃない
diffコマンドとかそうだろ
0374デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:28:48.60ID:wXl0ssRE
同じ出力のデータを分けて処理することは可能だが、なぜ魔法文にこだわっているのかがわからない。
0375デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:31:24.78ID:m+FxQhlt
>>374
その話は関係ないから打ち切ろう

あるツールが「引数で指定した同じファイルを二回読込みしている」
そういう処理をしている。(そのツールの修正は不可能)
ここまでは理解しているかな?
0376デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:32:23.63ID:m+FxQhlt
まあ結論としては無理ってわかってんだけどさ
bashの拡張を持ってしても
0377デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:35:32.54ID:m+FxQhlt
あ、一時ファイル(FIFOファイル含む)作りたくないっていうのが最終的な希望ね。
メモリだけ(tmpfsや類似のメモリベースのファイルシステムやブロックデバイス除く)でやりたい。
無理ってわかってるけど。
0378デフォルトの名無しさん
垢版 |
2019/05/03(金) 23:01:24.06ID:wXl0ssRE
ただの無知か。
0379デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:14:36.29ID:HnSBFy63
>>371
例がないと何を言っているか意味がよく分からない。
teeとかファイルに出力しながら標準出力にも出力しているけど、
そのようなことがbashだけで表現できればOK?
0380デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:40:10.00ID:eyQzK648
>>379
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。

#!/bin/sh
cat "$1"
wc -l "$1"


↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
0381デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:47:38.10ID:HnSBFy63
>>380
ファイルを作らないでメモリだけでっていうことなら、
↓こんな感じならOKなの?
dat=$(cat $1)
0383デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:01:46.67ID:eyQzK648
明らかに読み間違えてるレスがくると疲れるんで、
一時ファイルを使った場合の例も書いておくは
これは例なんで、この例を修正しろなんてレスは不要

generate-text > /tmp/test.txt
kono-comand "/tmp/test.txt"

この一時ファイル test.txt を作りたくない
なんで?とかいう質問も不要
0384デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:05:16.07ID:HnSBFy63
>>383
ホントに意味が分からないんだは、
上の例でもこれでいいんじゃないのと思っちゃう。
generate-text | kono-comand
だからこれを直せってほうが意味通じるかも。
0386デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:07:09.78ID:eyQzK648
>>384
本当に疲れる。

>>371を読み返せ。

> リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
> リダイレクトを受け付けないコマンド
> リダイレクトを受け付けないコマンド
> リダイレクトを受け付けないコマンド

パイプもリダイレクトだ。
0387デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:08:50.78ID:eyQzK648
っていうか、

generate-text | kono-comand

kono-commandの内容は上に書いたとおり↓で

> #!/bin/sh
> cat "$1"
> wc -l "$1"

修正不可能つってるんだから
これでは動きません。の一言でよかったなw

>>385
動かないコードを書いる時点で説明の問題じゃない。
0388デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:09:39.22ID:ic6F2rX1
>>384
コマンドが標準入力をサポートしてない場合のだろう、よってパイプが使えない
標準入力サポートしていてパイプでいいだろうというコマンド例を挙げてくるとか説明が下手すぎなだけだろうなw
0391デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:11:55.19ID:eyQzK648
>>390
ん?今回はへこましてみるか?

俺「やっぱできないよなぁ」
→ 俺もできないと思うよ。

で終わればいいやん。
0393デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:16:50.69ID:eyQzK648
https://hogem.hatenablog.com/entry/20090530/1243612485

> diff -u hoge.out fuga.out
> diff <(./hoge) <(./fuga)

よくこんな感じで、一時ファイルを作らない例として挙げられてるけど、
これって、diffが引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。

だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。
0395デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:23:29.06ID:ic6F2rX1
ストリームでいいのかファイルでなければならないのか条件説明がやっぱり下手すぎ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ
0396デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:24:53.38ID:eyQzK648
>>395
これを満たせばいいだけ。
いい加減にしろや


「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。

#!/bin/sh
cat "$1"
wc -l "$1"


↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
0397デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:26:01.06ID:eyQzK648
はは。catとwcでファイル読み込みを二回実行してるから、
ストリームでは無理なことにも気づいてない(笑)
マヌケか
0399デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:27:31.82ID:eyQzK648
>>398
どこが下手なのか言ってないからね。

ストリームで不可能な例を見て、
これストリームで可能じゃん!って
言ってしまった時点で、お前の負け
0400デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:30:40.72ID:eyQzK648
俺が言いたいのは、

> diff <(./hoge) <(./fuga)

が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。


<(./hoge)が使えるかどうかは、コマンド次第という話をしてる

どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。
0401デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:31:29.76ID:ic6F2rX1
>>384
というように、
cat "$1" | wc -l
したいわけじゃないんだよ。後は後出しでいろいろ言ってくるだろう
0402デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:32:27.87ID:eyQzK648
ということを、とあるファイルを引数にするコマンドを
一時ファイルを作らないでやろうとして
あれ?となった次第。

そのコマンド、一度だけしか読まないでできるように思えるんだけどな。
0404デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:36:59.95ID:ic6F2rX1
catやwcなんぞ各コマンドの入力ソースはストリームでしかないので、できないことはないけどな。お前には教えないがw
0405デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:38:28.81ID:eyQzK648
>>404

> これは "例" でありこのコマンドの内容についてのレスは不要

あーあ、やっちまった。コマンドの内容にレスしたね(笑)
0407デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:40:24.64ID:eyQzK648
例だから、実際にはcatやwcが使われているわけじゃないのに
catやwcなんぞとかwww
0408デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:40:58.27ID:eyQzK648
>>406
自分の理解力のなさを自覚するように。

こっちは、ちゃんと例を出してる。
その例を満たせなかった時点でアウト
0409デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:44:00.90ID:ic6F2rX1
コマンドの入力がストリームでいいならできる、他のなんか知らんコマンドがストリームじゃダメならできないでしかない。使用するコマンドによるでしかないだろにアホか
0410デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:53:18.47ID:eyQzK648
> コマンドの入力がストリームでいいならできる、

そんな当たり前のことを言われてもなw


重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。

それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ

> diff <(./hoge) <(./fuga)

だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。
0411デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:54:58.56ID:eyQzK648
あ、bashの拡張なんて俺は普通使わんけどなw
今回はたまたま利用可能だったってだけで
0412デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:55:49.57ID:ic6F2rX1
では、なにを当たり前のことを延々と言っているのかね?
というような、お前のレスはこんなんばっかだな
0414デフォルトの名無しさん
垢版 |
2019/05/04(土) 10:58:48.90ID:eyQzK648
基本的に、俺が出した結論が正解なので、
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン
0417デフォルトの名無しさん
垢版 |
2019/05/04(土) 11:04:39.93ID:eyQzK648
そういや前にも、

他にもやり方あるけどお前には教えてやんないよ。ばーかばーか

みたいなレスあったなw
結局やり方なかったみたいだけどw


あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!
0418デフォルトの名無しさん
垢版 |
2019/05/04(土) 11:05:09.17ID:ic6F2rX1
ほほー、よくわからんが解決してなにより
めずらしくちゃんと終えられてよかったよ
0420デフォルトの名無しさん
垢版 |
2019/05/04(土) 20:25:44.11ID:ifYIOobQ
やれやれ、何事かと思ったら……
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。
0421デフォルトの名無しさん
垢版 |
2019/05/04(土) 21:30:57.91ID:eyQzK648
ツール名聞いたって何の意味もないくせにw

じゃあgccとでも言っておこうか。一例として
0423デフォルトの名無しさん
垢版 |
2019/05/05(日) 01:20:16.53ID:kL93aIfd
なぜかシェルスクリプトのスレなのにコマンドの世界の話をしてますね。
0424デフォルトの名無しさん
垢版 |
2019/05/05(日) 01:55:58.03ID:BV99JfCS
シェルスクリプトはコマンドを使って組むもの。基本的なものですらコマンドだったり。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。
0425デフォルトの名無しさん
垢版 |
2019/05/05(日) 04:20:05.42ID:HUD7QHVp
いつものってことはこいつは常連客なのか
ちゃんとコテ付けてくれないと困るなぁ
0426デフォルトの名無しさん
垢版 |
2019/05/05(日) 13:10:37.85ID:ptHRpxR9
>>424
プログラムですよ?
0431デフォルトの名無しさん
垢版 |
2019/05/11(土) 15:19:07.32ID:D877RybE
[ string1 > string2 ] ってPOSIX準拠じゃないよね?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?
0432デフォルトの名無しさん
垢版 |
2019/05/12(日) 02:15:32.41ID:0u/cIV/f
>>427
おまえさ、ここはシェルスクリプトのスレッドだぞ?

コマンド一発にしたいのなら、そういうコマンドを作ればいい。

UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。
0433デフォルトの名無しさん
垢版 |
2019/05/12(日) 02:18:26.37ID:0u/cIV/f
>>431
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。
0435デフォルトの名無しさん
垢版 |
2019/05/12(日) 18:06:37.34ID:VATOmp33
>>431
外部コマンドを使わないという制約なら
↓こういうのでは
string1='aaaaa'
string2='bbbb'
[ ${#string1} -le ${#string2} ]
0436デフォルトの名無しさん
垢版 |
2019/05/12(日) 19:46:54.27ID:OoMn1CYl
「文字列の比較」ができるという触れ込みで文字数の比較を
している言語やデータベースなんか聞いたこと無いなw

普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか
0437デフォルトの名無しさん
垢版 |
2019/05/12(日) 20:03:17.70ID:0u/cIV/f
>>436
文字列が同じ値かどうかの比較を忘れているのか?
0438デフォルトの名無しさん
垢版 |
2019/05/12(日) 22:54:11.71ID:OoMn1CYl
変なやつだったようだな
0439デフォルトの名無しさん
垢版 |
2019/05/12(日) 23:14:03.33ID:VATOmp33
文字数の比較じゃないのか。申し訳ない、俺の読解力が不足してた。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。
0440デフォルトの名無しさん
垢版 |
2019/05/12(日) 23:17:08.65ID:OoMn1CYl
C言語
0441デフォルトの名無しさん
垢版 |
2019/05/13(月) 03:22:38.08ID:gc1mJry9
構文的ならC言語はできない方かなあと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと
0444デフォルトの名無しさん
垢版 |
2019/05/13(月) 18:11:06.86ID:/95lNMvT
C言語を基準にしたら文字列同士の比較は簡単な構文ではできない。

しかし、C言語よりあとにできたプログラミング言語は、文字列同士ができ、まったく同じ文字列かどうかの比較ができる。

同じか同じでないか以外の比較は、プログラミング言語によって比較の指定がことなる。

文字列の長さ比較なのか、文字コードの大小比較なのか、よくわからないコードは可読性が低く、シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。

同じOSでも設定違いで変化するから、バグを埋め込むだけである。
0445デフォルトの名無しさん
垢版 |
2019/05/13(月) 18:27:44.64ID:biecMsFD
> シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。

どんなふうに?

例として2つ(以上)のOSで比較方法を書いてみてよ
0446デフォルトの名無しさん
垢版 |
2019/05/13(月) 18:33:43.96ID:/95lNMvT
だいたいどの種類のシェルか限定していない状態で具体例を挙げても意味がない。
0447デフォルトの名無しさん
垢版 |
2019/05/13(月) 18:34:56.16ID:biecMsFD
意味有るでしょ?限定してないなら
例として○○のシェルならって書けばいいだけだよ
0448デフォルトの名無しさん
垢版 |
2019/05/13(月) 20:41:17.20ID:/95lNMvT
シェルスクリプトが環境依存であることを知らない人間に何を言っても時間の無駄。
0449デフォルトの名無しさん
垢版 |
2019/05/13(月) 20:42:45.31ID:/95lNMvT
文字コードが異なるだけで、文字照合順序がかわる。

同じシェルスクリプトでもテストコマンドの評価が変わる。
0451デフォルトの名無しさん
垢版 |
2019/05/13(月) 20:56:23.36ID:/95lNMvT
>>450

2 デフォルトの名無しさん sage 2018/09/21(金) 23:36:59.94 ID:/eJt2TVD
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
 つまりシバンは#! /bin/shです。
 他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
  OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
   ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
  FreeBSDユーザーは/bin/shの実体がashなので注意。
  Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
  (参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
 有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
 最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
  (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
  Heirloom sh: http://heirloom.sourceforge.net/sh.html
  Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
 Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
 apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況