シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
385デフォルトの名無しさん
2019/05/04(土) 10:05:29.00ID:ic6F2rX1 条件の説明が下手すぎ
386デフォルトの名無しさん
2019/05/04(土) 10:07:09.78ID:eyQzK648387デフォルトの名無しさん
2019/05/04(土) 10:08:50.78ID:eyQzK648 っていうか、
generate-text | kono-comand
kono-commandの内容は上に書いたとおり↓で
> #!/bin/sh
> cat "$1"
> wc -l "$1"
修正不可能つってるんだから
これでは動きません。の一言でよかったなw
>>385
動かないコードを書いる時点で説明の問題じゃない。
generate-text | kono-comand
kono-commandの内容は上に書いたとおり↓で
> #!/bin/sh
> cat "$1"
> wc -l "$1"
修正不可能つってるんだから
これでは動きません。の一言でよかったなw
>>385
動かないコードを書いる時点で説明の問題じゃない。
388デフォルトの名無しさん
2019/05/04(土) 10:09:39.22ID:ic6F2rX1389デフォルトの名無しさん
2019/05/04(土) 10:10:34.97ID:eyQzK648 >>388
あ、回答者の説明が下手すぎってことかw
あ、回答者の説明が下手すぎってことかw
390デフォルトの名無しさん
2019/05/04(土) 10:10:41.51ID:ic6F2rX1 いつもの自信過剰な人か
391デフォルトの名無しさん
2019/05/04(土) 10:11:55.19ID:eyQzK648392デフォルトの名無しさん
2019/05/04(土) 10:15:59.85ID:ic6F2rX1 標準入力もデバイス(ファイル)としてある
393デフォルトの名無しさん
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が引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。
だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。
> diff -u hoge.out fuga.out
> diff <(./hoge) <(./fuga)
よくこんな感じで、一時ファイルを作らない例として挙げられてるけど、
これって、diffが引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。
だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。
394デフォルトの名無しさん
2019/05/04(土) 10:17:09.83ID:eyQzK648 >>392
知ってる
知ってる
395デフォルトの名無しさん
2019/05/04(土) 10:23:29.06ID:ic6F2rX1 ストリームでいいのかファイルでなければならないのか条件説明がやっぱり下手すぎ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ
396デフォルトの名無しさん
2019/05/04(土) 10:24:53.38ID:eyQzK648 >>395
これを満たせばいいだけ。
いい加減にしろや
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
これを満たせばいいだけ。
いい加減にしろや
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
397デフォルトの名無しさん
2019/05/04(土) 10:26:01.06ID:eyQzK648 はは。catとwcでファイル読み込みを二回実行してるから、
ストリームでは無理なことにも気づいてない(笑)
マヌケか
ストリームでは無理なことにも気づいてない(笑)
マヌケか
398デフォルトの名無しさん
2019/05/04(土) 10:26:07.92ID:ic6F2rX1 それが下手だと言ってもわからないんだな
399デフォルトの名無しさん
2019/05/04(土) 10:27:31.82ID:eyQzK648400デフォルトの名無しさん
2019/05/04(土) 10:30:40.72ID:eyQzK648 俺が言いたいのは、
> diff <(./hoge) <(./fuga)
が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。
<(./hoge)が使えるかどうかは、コマンド次第という話をしてる
どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。
> diff <(./hoge) <(./fuga)
が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。
<(./hoge)が使えるかどうかは、コマンド次第という話をしてる
どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。
401デフォルトの名無しさん
2019/05/04(土) 10:31:29.76ID:ic6F2rX1402デフォルトの名無しさん
2019/05/04(土) 10:32:27.87ID:eyQzK648 ということを、とあるファイルを引数にするコマンドを
一時ファイルを作らないでやろうとして
あれ?となった次第。
そのコマンド、一度だけしか読まないでできるように思えるんだけどな。
一時ファイルを作らないでやろうとして
あれ?となった次第。
そのコマンド、一度だけしか読まないでできるように思えるんだけどな。
403デフォルトの名無しさん
2019/05/04(土) 10:33:45.55ID:eyQzK648404デフォルトの名無しさん
2019/05/04(土) 10:36:59.95ID:ic6F2rX1 catやwcなんぞ各コマンドの入力ソースはストリームでしかないので、できないことはないけどな。お前には教えないがw
405デフォルトの名無しさん
2019/05/04(土) 10:38:28.81ID:eyQzK648406デフォルトの名無しさん
2019/05/04(土) 10:40:23.60ID:ic6F2rX1407デフォルトの名無しさん
2019/05/04(土) 10:40:24.64ID:eyQzK648 例だから、実際にはcatやwcが使われているわけじゃないのに
catやwcなんぞとかwww
catやwcなんぞとかwww
408デフォルトの名無しさん
2019/05/04(土) 10:40:58.27ID:eyQzK648409デフォルトの名無しさん
2019/05/04(土) 10:44:00.90ID:ic6F2rX1 コマンドの入力がストリームでいいならできる、他のなんか知らんコマンドがストリームじゃダメならできないでしかない。使用するコマンドによるでしかないだろにアホか
410デフォルトの名無しさん
2019/05/04(土) 10:53:18.47ID:eyQzK648 > コマンドの入力がストリームでいいならできる、
そんな当たり前のことを言われてもなw
重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。
それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ
> diff <(./hoge) <(./fuga)
だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。
そんな当たり前のことを言われてもなw
重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。
それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ
> diff <(./hoge) <(./fuga)
だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。
411デフォルトの名無しさん
2019/05/04(土) 10:54:58.56ID:eyQzK648 あ、bashの拡張なんて俺は普通使わんけどなw
今回はたまたま利用可能だったってだけで
今回はたまたま利用可能だったってだけで
412デフォルトの名無しさん
2019/05/04(土) 10:55:49.57ID:ic6F2rX1 では、なにを当たり前のことを延々と言っているのかね?
というような、お前のレスはこんなんばっかだな
というような、お前のレスはこんなんばっかだな
413デフォルトの名無しさん
2019/05/04(土) 10:56:37.92ID:eyQzK648414デフォルトの名無しさん
2019/05/04(土) 10:58:48.90ID:eyQzK648 基本的に、俺が出した結論が正解なので、
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン
415デフォルトの名無しさん
2019/05/04(土) 11:00:31.72ID:ic6F2rX1416デフォルトの名無しさん
2019/05/04(土) 11:03:05.91ID:eyQzK648 >>415
その答えは俺も知ってるけどな(笑)
その答えは俺も知ってるけどな(笑)
417デフォルトの名無しさん
2019/05/04(土) 11:04:39.93ID:eyQzK648 そういや前にも、
他にもやり方あるけどお前には教えてやんないよ。ばーかばーか
みたいなレスあったなw
結局やり方なかったみたいだけどw
あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!
他にもやり方あるけどお前には教えてやんないよ。ばーかばーか
みたいなレスあったなw
結局やり方なかったみたいだけどw
あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!
418デフォルトの名無しさん
2019/05/04(土) 11:05:09.17ID:ic6F2rX1 ほほー、よくわからんが解決してなにより
めずらしくちゃんと終えられてよかったよ
めずらしくちゃんと終えられてよかったよ
419デフォルトの名無しさん
2019/05/04(土) 11:10:16.30ID:eyQzK648 ほほー(笑)
420デフォルトの名無しさん
2019/05/04(土) 20:25:44.11ID:ifYIOobQ やれやれ、何事かと思ったら……
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。
421デフォルトの名無しさん
2019/05/04(土) 21:30:57.91ID:eyQzK648 ツール名聞いたって何の意味もないくせにw
じゃあgccとでも言っておこうか。一例として
じゃあgccとでも言っておこうか。一例として
422デフォルトの名無しさん
2019/05/05(日) 00:09:54.93ID:v1YqewFO チンピラ以下の馬鹿だな
423デフォルトの名無しさん
2019/05/05(日) 01:20:16.53ID:kL93aIfd なぜかシェルスクリプトのスレなのにコマンドの世界の話をしてますね。
424デフォルトの名無しさん
2019/05/05(日) 01:55:58.03ID:BV99JfCS シェルスクリプトはコマンドを使って組むもの。基本的なものですらコマンドだったり。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。
425デフォルトの名無しさん
2019/05/05(日) 04:20:05.42ID:HUD7QHVp いつものってことはこいつは常連客なのか
ちゃんとコテ付けてくれないと困るなぁ
ちゃんとコテ付けてくれないと困るなぁ
426デフォルトの名無しさん
2019/05/05(日) 13:10:37.85ID:ptHRpxR9 >>424
プログラムですよ?
プログラムですよ?
427デフォルトの名無しさん
2019/05/05(日) 19:12:30.87ID:Cb4SiVVu なにいってんのこいつ
428デフォルトの名無しさん
2019/05/05(日) 22:39:57.67ID:QbHFXZX+ やっぱワッチョイ導入しよーぜ
429デフォルトの名無しさん
2019/05/06(月) 01:18:15.86ID:VbOWf0H0 やはりそれが目的ですか
430デフォルトの名無しさん
2019/05/06(月) 13:16:54.80ID:UGCyqtDX どういうこと?
431デフォルトの名無しさん
2019/05/11(土) 15:19:07.32ID:D877RybE [ string1 > string2 ] ってPOSIX準拠じゃないよね?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?
432デフォルトの名無しさん
2019/05/12(日) 02:15:32.41ID:0u/cIV/f >>427
おまえさ、ここはシェルスクリプトのスレッドだぞ?
コマンド一発にしたいのなら、そういうコマンドを作ればいい。
UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。
おまえさ、ここはシェルスクリプトのスレッドだぞ?
コマンド一発にしたいのなら、そういうコマンドを作ればいい。
UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。
433デフォルトの名無しさん
2019/05/12(日) 02:18:26.37ID:0u/cIV/f >>431
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。
434デフォルトの名無しさん
2019/05/12(日) 02:27:43.60ID:4QpB/QIi これまた変なのが現れたな
435デフォルトの名無しさん
2019/05/12(日) 18:06:37.34ID:VATOmp33436デフォルトの名無しさん
2019/05/12(日) 19:46:54.27ID:OoMn1CYl 「文字列の比較」ができるという触れ込みで文字数の比較を
している言語やデータベースなんか聞いたこと無いなw
普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか
している言語やデータベースなんか聞いたこと無いなw
普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか
437デフォルトの名無しさん
2019/05/12(日) 20:03:17.70ID:0u/cIV/f >>436
文字列が同じ値かどうかの比較を忘れているのか?
文字列が同じ値かどうかの比較を忘れているのか?
438デフォルトの名無しさん
2019/05/12(日) 22:54:11.71ID:OoMn1CYl 変なやつだったようだな
439デフォルトの名無しさん
2019/05/12(日) 23:14:03.33ID:VATOmp33 文字数の比較じゃないのか。申し訳ない、俺の読解力が不足してた。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。
440デフォルトの名無しさん
2019/05/12(日) 23:17:08.65ID:OoMn1CYl C言語
441デフォルトの名無しさん
2019/05/13(月) 03:22:38.08ID:gc1mJry9 構文的ならC言語はできない方かなあと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと
442デフォルトの名無しさん
2019/05/13(月) 04:40:36.56ID:0SM9rJAF >>439
ベイシック
ベイシック
443デフォルトの名無しさん
2019/05/13(月) 15:51:16.30ID:JKDjGwzG444デフォルトの名無しさん
2019/05/13(月) 18:11:06.86ID:/95lNMvT C言語を基準にしたら文字列同士の比較は簡単な構文ではできない。
しかし、C言語よりあとにできたプログラミング言語は、文字列同士ができ、まったく同じ文字列かどうかの比較ができる。
同じか同じでないか以外の比較は、プログラミング言語によって比較の指定がことなる。
文字列の長さ比較なのか、文字コードの大小比較なのか、よくわからないコードは可読性が低く、シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
同じOSでも設定違いで変化するから、バグを埋め込むだけである。
しかし、C言語よりあとにできたプログラミング言語は、文字列同士ができ、まったく同じ文字列かどうかの比較ができる。
同じか同じでないか以外の比較は、プログラミング言語によって比較の指定がことなる。
文字列の長さ比較なのか、文字コードの大小比較なのか、よくわからないコードは可読性が低く、シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
同じOSでも設定違いで変化するから、バグを埋め込むだけである。
445デフォルトの名無しさん
2019/05/13(月) 18:27:44.64ID:biecMsFD > シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
どんなふうに?
例として2つ(以上)のOSで比較方法を書いてみてよ
どんなふうに?
例として2つ(以上)のOSで比較方法を書いてみてよ
446デフォルトの名無しさん
2019/05/13(月) 18:33:43.96ID:/95lNMvT だいたいどの種類のシェルか限定していない状態で具体例を挙げても意味がない。
447デフォルトの名無しさん
2019/05/13(月) 18:34:56.16ID:biecMsFD 意味有るでしょ?限定してないなら
例として○○のシェルならって書けばいいだけだよ
例として○○のシェルならって書けばいいだけだよ
448デフォルトの名無しさん
2019/05/13(月) 20:41:17.20ID:/95lNMvT シェルスクリプトが環境依存であることを知らない人間に何を言っても時間の無駄。
449デフォルトの名無しさん
2019/05/13(月) 20:42:45.31ID:/95lNMvT 文字コードが異なるだけで、文字照合順序がかわる。
同じシェルスクリプトでもテストコマンドの評価が変わる。
同じシェルスクリプトでもテストコマンドの評価が変わる。
450デフォルトの名無しさん
2019/05/13(月) 20:46:52.81ID:WOFscy66 OS?
451デフォルトの名無しさん
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オプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
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オプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
452デフォルトの名無しさん
2019/05/13(月) 21:26:39.05ID:biecMsFD >>449
今その話関係ないよ?
今その話関係ないよ?
453デフォルトの名無しさん
2019/05/13(月) 22:14:58.04ID:9QsNbP8l 文字コードが異なる文字列の比較をするときって
どんなとき?
どんなとき?
454デフォルトの名無しさん
2019/05/13(月) 23:06:37.15ID:zTqgOdMW エンコーディングが変われば文字列の大小比較の結果も変わるかもしれないが
それを指して「比較方法がかわってしまう」と言ってるのか?
そうだとしても OS に依存するものではないだろうし
「シェルスクリプトの場合は」というのもおかしいように思う。
勉強不足な私のためにもう少し説明してはくれないだろうか。
ところで、シェルスクリプトで文字列の大小比較ってする?
それを指して「比較方法がかわってしまう」と言ってるのか?
そうだとしても OS に依存するものではないだろうし
「シェルスクリプトの場合は」というのもおかしいように思う。
勉強不足な私のためにもう少し説明してはくれないだろうか。
ところで、シェルスクリプトで文字列の大小比較ってする?
455デフォルトの名無しさん
2019/05/13(月) 23:16:05.42ID:T+zd+wGF するからbashで拡張されたんじゃねーの?
456デフォルトの名無しさん
2019/05/13(月) 23:19:07.49ID:TrAKdX2K >>443
それ言ったらObject.compareTo()な言語全部じゃん
それ言ったらObject.compareTo()な言語全部じゃん
457デフォルトの名無しさん
2019/05/14(火) 01:01:38.75ID:M5HaQ5Df >>455
Bashってそんなことできたのか。
Bashってそんなことできたのか。
458デフォルトの名無しさん
2019/05/14(火) 01:10:46.93ID:upCBpEzH459デフォルトの名無しさん
2019/05/14(火) 09:55:51.06ID:M5HaQ5Df ん? Bashで文字列の大小ってどうやって比較するんだ?
[ "abcd" < "cde" ]
↑こういうのエラーになるぞ。
[ "abcd" < "cde" ]
↑こういうのエラーになるぞ。
460デフォルトの名無しさん
2019/05/14(火) 10:38:41.16ID:Vb/jSjs4 [[ "abcd" < "cde" ]]
461デフォルトの名無しさん
2019/05/14(火) 11:17:21.83ID:4FRIObo4 文字列の大小は文字列長のことを言っているのか?
462デフォルトの名無しさん
2019/05/14(火) 12:48:35.79ID:CYW9GfRv >>459
[ "abcd" \< "cde" ]
[ "abcd" \< "cde" ]
463デフォルトの名無しさん
2019/05/14(火) 16:26:17.41ID:kz8JbfNJ464デフォルトの名無しさん
2019/05/14(火) 16:30:21.51ID:upCBpEzH 「文字列の比較を行う」という構文やライブラリで
文字列長の比較を行ってるものなんてあるか?
数値の比較はできるんだから「文字列長を取得する」命令だけあれば十分
だから「文字列長の比較を行う」命令なんてないだろ
文字列長の比較を行ってるものなんてあるか?
数値の比較はできるんだから「文字列長を取得する」命令だけあれば十分
だから「文字列長の比較を行う」命令なんてないだろ
465デフォルトの名無しさん
2019/05/14(火) 19:07:44.93ID:M5HaQ5Df Bashで文字列の大小比較って結局なにが基準なのかな。
466デフォルトの名無しさん
2019/05/14(火) 19:08:11.58ID:M5HaQ5Df 辞書順で先かあとかじゃね?
467デフォルトの名無しさん
2019/05/14(火) 19:08:35.08ID:M5HaQ5Df (連投すまん)自問自答みたいになっちゃったけど
辞書順でした。
辞書順でした。
468デフォルトの名無しさん
2019/05/14(火) 19:37:57.03ID:SUlCeWD6 他のプログラミング言語を知らなさすぎだろうというのが複数いすぎ
469デフォルトの名無しさん
2019/05/14(火) 20:36:33.50ID:bepTC+/0 日本語すら怪しい日本人がうようよいるご時世ですから
470デフォルトの名無しさん
2019/05/14(火) 21:13:15.31ID:Mw6Gyvjp そういうやつも日本語わかってないというのも定番
471デフォルトの名無しさん
2019/05/14(火) 23:19:21.13ID:+OBjJPst シェルスクリプトはわからないが、文字列長が同じ場合は、文字コードの大小を先頭文字から比較していき、大小比較をするプログラミング言語は存在する。
472デフォルトの名無しさん
2019/05/14(火) 23:38:13.99ID:TDDhIyFE で、その名前は?
473デフォルトの名無しさん
2019/05/15(水) 01:49:21.77ID:MwugOkQt >>472
PL/SQL
PL/SQL
474デフォルトの名無しさん
2019/05/15(水) 01:54:48.92ID:qxUiM81Y へぇ、文字列長が違ったら大小を比較しないんだ
475デフォルトの名無しさん
2019/05/15(水) 01:59:24.19ID:MwugOkQt データベースの場合、文字列の昇順、降順をSQLの仕様で意識するから、文字コードの大小比較をするプログラミング言語の仕様があるのは副産物かもしれないが、簡単にできてしまうので存在する。
年月日を文字列で持っていても過去、未来を判定できる。
年月日を文字列で持っていても過去、未来を判定できる。
476デフォルトの名無しさん
2019/05/15(水) 02:01:38.78ID:qxUiM81Y > 年月日を文字列で持っていても過去、未来を判定できる。
Wed May 15 02:01:21 DST 2019
日付を文字列で持っていても?
Wed May 15 02:01:21 DST 2019
日付を文字列で持っていても?
477デフォルトの名無しさん
2019/05/15(水) 02:04:28.58ID:MwugOkQt >>474
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
478デフォルトの名無しさん
2019/05/15(水) 02:06:57.93ID:MwugOkQt >>476
わざと前方からの比較が難しい例を挙げているが、あんたの質問には全部、答えられるよ。
わざと前方からの比較が難しい例を挙げているが、あんたの質問には全部、答えられるよ。
479デフォルトの名無しさん
2019/05/15(水) 02:08:36.95ID:MwugOkQt >>476
だいたい日本でその並び順の日付文字列をデータベースに文字列として格納するアホはいない。
だいたい日本でその並び順の日付文字列をデータベースに文字列として格納するアホはいない。
480デフォルトの名無しさん
2019/05/15(水) 02:16:25.95ID:MwugOkQt 日付を文字列で持っていても、過去、未来の判定には型変換をして比較する方がコードとしてはよいコード。
日付文字列を文字列のまま比較するのは悪い例だが、そういうコードを書く人間はいる。
ただし、9999年99月99日等、現実には存在しない年月日に意味を与えて使っているシステムはたくさんあるので、型変換して比較すると、手前でさらに判定ロジックが必要になり、コードが煩雑になる。
言っておくが私はこういう設計は、基本的に好きではないし、良いとは思っていない。
日付文字列を文字列のまま比較するのは悪い例だが、そういうコードを書く人間はいる。
ただし、9999年99月99日等、現実には存在しない年月日に意味を与えて使っているシステムはたくさんあるので、型変換して比較すると、手前でさらに判定ロジックが必要になり、コードが煩雑になる。
言っておくが私はこういう設計は、基本的に好きではないし、良いとは思っていない。
481デフォルトの名無しさん
2019/05/15(水) 02:21:07.76ID:qxUiM81Y だから日付を文字列で保つ場合は、文字列照合順で比較すれば、
大小がわかるような「特別に考慮されたフォーマット」で持たなければならないだろ
日本とか関係ねーよ。和暦で持ったら比較できないし、
1月ではなく01月って持たなければならないし
自分が普段使ってるフォーマットと一致しているからたまたまできることを
「年月日を文字列で持っていれば比較できる」って言ってしまうのは思慮が浅い
大小がわかるような「特別に考慮されたフォーマット」で持たなければならないだろ
日本とか関係ねーよ。和暦で持ったら比較できないし、
1月ではなく01月って持たなければならないし
自分が普段使ってるフォーマットと一致しているからたまたまできることを
「年月日を文字列で持っていれば比較できる」って言ってしまうのは思慮が浅い
482デフォルトの名無しさん
2019/05/15(水) 02:22:49.88ID:qxUiM81Y >>447
> データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
文字列長が変わったら、設定や製品によって動きが変わるということは
文字列長が変わらないなら、動きは変わらないってことですよね。
言いたいことがわからない?
なんで全く無関係な文字列長を引き合いに出してるの?って
皮肉を言ってるんだが
> データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
文字列長が変わったら、設定や製品によって動きが変わるということは
文字列長が変わらないなら、動きは変わらないってことですよね。
言いたいことがわからない?
なんで全く無関係な文字列長を引き合いに出してるの?って
皮肉を言ってるんだが
483デフォルトの名無しさん
2019/05/15(水) 02:31:25.71ID:MwugOkQt プログラミング言語の具体例を挙げると、今度はそのプログラミング言語がわからなくて文句を言う。
結局、あんたはなんだったらわかるのか?
結局、あんたはなんだったらわかるのか?
484デフォルトの名無しさん
2019/05/15(水) 02:33:37.63ID:MwugOkQt■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 寝癖ってどうしたらつかなくなるんや?
- 自閉症が「んなっしょい」と連呼するお🏡
- 【画像】エロい一般漫画はなぜこんなに抜けるのか
- BTSのバラエティ面白すぎワロタ
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
