シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
探検
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
554デフォルトの名無しさん
2019/05/17(金) 10:55:06.48ID:+DCiWWVl 結局シェルスクリプトの話と言いつつ
漢数字での比較をシェルスクリプトで実装しろと言われても
逃げてばっかり(笑)
俺が出した問題じゃなくて、自分で新たに派生させたくせに
派生させたと言いつつ、シェルスクリプトの話をしない
漢数字での比較をシェルスクリプトで実装しろと言われても
逃げてばっかり(笑)
俺が出した問題じゃなくて、自分で新たに派生させたくせに
派生させたと言いつつ、シェルスクリプトの話をしない
555デフォルトの名無しさん
2019/05/17(金) 10:57:54.16ID:AJ2dA4T/556デフォルトの名無しさん
2019/05/17(金) 11:05:46.65ID:+DCiWWVl だから漢数字での比較は、俺が出したお題じゃねーだろw
自分で出したんだから自分で答えろや
自分で出したんだから自分で答えろや
557デフォルトの名無しさん
2019/05/17(金) 11:06:52.98ID:p3Pa5WY0 この執拗さと自己中ぶりはいつもの馬鹿だろうとしか思えない
558デフォルトの名無しさん
2019/05/17(金) 11:12:01.45ID:+DCiWWVl 結局漢数字はシェルスクリプトの話をしたかったわけじゃないってことでOK?
シェルスクリプトの話しろよ
シェルスクリプトの話しろよ
559デフォルトの名無しさん
2019/05/17(金) 15:50:22.36ID:vMstE0Yz 馬鹿なレスだな
560デフォルトの名無しさん
2019/05/17(金) 21:23:51.74ID:rpsKTByN $ ./a.sh <<EOF
> 三千七百七十六 八千八百四十八
> 三十五億 三十五億
> 六百三十四 三百三十
> EOF
三千七百七十六 < 八千八百四十八
三十五億 = 三十五億
六百三十四 > 三百三十
$
漢数字での比較ってこんなのか? そうでないとしてもどうでもいいが。
> 三千七百七十六 八千八百四十八
> 三十五億 三十五億
> 六百三十四 三百三十
> EOF
三千七百七十六 < 八千八百四十八
三十五億 = 三十五億
六百三十四 > 三百三十
$
漢数字での比較ってこんなのか? そうでないとしてもどうでもいいが。
561デフォルトの名無しさん
2019/05/18(土) 03:54:46.72ID:JuXjXOXc 漢数字でシェルスクリプトの話につなげる気はないんだからどうでもいいよ
562デフォルトの名無しさん
2019/05/18(土) 04:10:45.05ID:Qoy0pg1H 何でもかんでも否定したいだけの子がいるところで
まともな議論はできないしね
まともな議論はできないしね
563デフォルトの名無しさん
2019/05/18(土) 05:05:24.43ID:arw0wGqU 砂場の幼稚園児の駄々っ子になんか重なるなあ
お砂場だから自由に遊んでもいいと思うけどwリアルと違って無視すれば居ないのと同じだし
お砂場だから自由に遊んでもいいと思うけどwリアルと違って無視すれば居ないのと同じだし
564560
2019/05/18(土) 09:02:03.67ID:524JDXbW まあ、かまってちゃんの相手をしたかったわけじゃなくて
C でやるようなテキストのパースを普段あまりシェルスクリプトを書かない俺が
どこまで bash でできるのかと思っただけだからね。気は済んだよ。
そして、こんなことでも自分でやってみる方がかまってちゃんよりも絶対楽しい。
C でやるようなテキストのパースを普段あまりシェルスクリプトを書かない俺が
どこまで bash でできるのかと思っただけだからね。気は済んだよ。
そして、こんなことでも自分でやってみる方がかまってちゃんよりも絶対楽しい。
565デフォルトの名無しさん
2019/05/18(土) 10:26:06.91ID:jXb4UL4k566デフォルトの名無しさん
2019/05/18(土) 11:21:30.92ID:arw0wGqU567デフォルトの名無しさん
2019/05/18(土) 12:43:58.12ID:JuXjXOXc568デフォルトの名無しさん
2019/05/18(土) 12:45:20.90ID:JuXjXOXc >564
> どこまで bash でできるのかと思っただけだからね。気は済んだよ。
bashでってわざわざ書いてあるってことは
POSIXシェルでの実装は断念したってこと?
> どこまで bash でできるのかと思っただけだからね。気は済んだよ。
bashでってわざわざ書いてあるってことは
POSIXシェルでの実装は断念したってこと?
569デフォルトの名無しさん
2019/05/18(土) 12:48:00.53ID:JuXjXOXc570デフォルトの名無しさん
2019/05/18(土) 14:31:15.80ID:arw0wGqU 何でもかんでも否定したいだけの子ってよく言ったものだな
目的を果たしているんだからそんなアホな条件にそう気は全くないね(そもそも設問がアホというのも気づいてないみたいだし)
自分がどうしつこく繰り返してたことも忘れたらしいのによく言うよ
目的を果たしているんだからそんなアホな条件にそう気は全くないね(そもそも設問がアホというのも気づいてないみたいだし)
自分がどうしつこく繰り返してたことも忘れたらしいのによく言うよ
571デフォルトの名無しさん
2019/05/18(土) 14:42:25.84ID:jXb4UL4k572デフォルトの名無しさん
2019/05/18(土) 14:46:37.88ID:arw0wGqU 回答するなら、一般的に使われるであろう漢数字の比較も出してくれたらいいな
変な条件内の使い道のないようなのでない。簡単と言われて文句つけられるんだから簡単だろうw
とりあえず >>571の言う通りお手並み拝見
変な条件内の使い道のないようなのでない。簡単と言われて文句つけられるんだから簡単だろうw
とりあえず >>571の言う通りお手並み拝見
573デフォルトの名無しさん
2019/05/18(土) 17:05:06.76ID:524JDXbW >>568
断念も何も、考えてすらいないよ。
「bash でやってみる」がテーマなんだから当たり前だろう?
お前の寝言に付き合ってるわけじゃないんだよ。
一応、やってみた感想を述べるなら
「すげーな bash 。でもやっぱりこれはシェルの仕事じゃないな。」
ってとこかな。
それでも楽しめたし多少なりとも bash を理解できたんだからそれでいいんだよ!
断念も何も、考えてすらいないよ。
「bash でやってみる」がテーマなんだから当たり前だろう?
お前の寝言に付き合ってるわけじゃないんだよ。
一応、やってみた感想を述べるなら
「すげーな bash 。でもやっぱりこれはシェルの仕事じゃないな。」
ってとこかな。
それでも楽しめたし多少なりとも bash を理解できたんだからそれでいいんだよ!
574デフォルトの名無しさん
2019/05/18(土) 17:10:57.93ID:c9LKncuu 回答よろしくってここはお前のお庭じゃねーんだぞw
なにお山の大将気取ってんだ
なにお山の大将気取ってんだ
575デフォルトの名無しさん
2019/05/18(土) 17:28:33.45ID:G+P7ooBK どうやらコンセンサスを得られたようだからな
もう一回いうぞ。漢数字の比較の話は
関係ないし誰も求めてないから黙れ、口を閉じろ
bashとPOSIXシェルの違いがわかってないやつが
いるが、bashは許可していない。
文字列の比較はbashで簡単できる(= シェルスクリプトでやるような仕事)
これをPOSIXシェルだけで外部コマンド呼び出し
なしで出来ないかというのがもともとの質問だ
二度とシェルスクリプト以外の話をするなよ
もう一回いうぞ。漢数字の比較の話は
関係ないし誰も求めてないから黙れ、口を閉じろ
bashとPOSIXシェルの違いがわかってないやつが
いるが、bashは許可していない。
文字列の比較はbashで簡単できる(= シェルスクリプトでやるような仕事)
これをPOSIXシェルだけで外部コマンド呼び出し
なしで出来ないかというのがもともとの質問だ
二度とシェルスクリプト以外の話をするなよ
576デフォルトの名無しさん
2019/05/18(土) 17:31:12.78ID:Qoy0pg1H >>575
だから俺が求めてるんだけども
だから俺が求めてるんだけども
577デフォルトの名無しさん
2019/05/18(土) 17:33:07.99ID:arw0wGqU578デフォルトの名無しさん
2019/05/18(土) 17:40:14.85ID:arw0wGqU あれだけ最後の方で答えないとか粘っていたのに「関係ないし誰も求めてないから黙れ、口を閉じろ」だって...w
脳みそのメモリ足りなさすぎだろうw
シェルスクリプトはグルー言語とも言われ、コマンドを使うのは普通なので、馬鹿な言い分は聞く必要性は全くないな。shell builtin の意味すら知らなさそう
口を開くほど馬鹿を晒す馬鹿って感じ
脳みそのメモリ足りなさすぎだろうw
シェルスクリプトはグルー言語とも言われ、コマンドを使うのは普通なので、馬鹿な言い分は聞く必要性は全くないな。shell builtin の意味すら知らなさそう
口を開くほど馬鹿を晒す馬鹿って感じ
579デフォルトの名無しさん
2019/05/18(土) 17:45:12.45ID:Qoy0pg1H >>575
つうか
>これをPOSIXシェルだけで外部コマンド呼び出し
>なしで出来ないかというのがもともとの質問だ
できない
で終わってんだろこの話
なんでいつまでも出来ない話に粘着してんの?
出来ないことを証明しろとか、キチガイの戯言を言いつのりたいだけなの?
つうか
>これをPOSIXシェルだけで外部コマンド呼び出し
>なしで出来ないかというのがもともとの質問だ
できない
で終わってんだろこの話
なんでいつまでも出来ない話に粘着してんの?
出来ないことを証明しろとか、キチガイの戯言を言いつのりたいだけなの?
580デフォルトの名無しさん
2019/05/18(土) 17:47:31.61ID:arw0wGqU ああ、もしかして変なの二人いたりするのかな??
だとしたら、勘弁してくれ。アホなことを言うのは一人で十分w
だとしたら、勘弁してくれ。アホなことを言うのは一人で十分w
581デフォルトの名無しさん
2019/05/18(土) 18:40:47.80ID:JuXjXOXc582デフォルトの名無しさん
2019/05/18(土) 18:50:12.59ID:jXb4UL4k $ vi 29581.sh
$ sh 29581.sh
29581.sh あいう いろは
ってなったけど?
$ sh 29581.sh
29581.sh あいう いろは
ってなったけど?
583デフォルトの名無しさん
2019/05/18(土) 18:54:36.40ID:JuXjXOXc >>582
な?できたろw
な?できたろw
584デフォルトの名無しさん
2019/05/18(土) 19:25:10.70ID:jXb4UL4k585デフォルトの名無しさん
2019/05/18(土) 19:43:02.94ID:arw0wGqU 実用性の欠けらも無いのが大好きだな
それなりにスキルがあってなぞなぞ好きならまだしも。スキル磨けよw
それなりにスキルがあってなぞなぞ好きならまだしも。スキル磨けよw
586デフォルトの名無しさん
2019/05/18(土) 20:48:31.62ID:3xvYFUWf スキル
587デフォルトの名無しさん
2019/05/19(日) 00:01:51.89ID:40XRh0yv >>580
いや,多分「マジで頭おかしい」のは一人。
もう一人もしくは二人くらい,そいつの煽りに乗せられてちょっとキレ気味なレスバを繰り広げてしまっている。
IDやワッチョイを集団でNG指定できる掲示板だったらよかったんだけどなぁ……。
いや,多分「マジで頭おかしい」のは一人。
もう一人もしくは二人くらい,そいつの煽りに乗せられてちょっとキレ気味なレスバを繰り広げてしまっている。
IDやワッチョイを集団でNG指定できる掲示板だったらよかったんだけどなぁ……。
588デフォルトの名無しさん
2019/05/19(日) 00:14:35.61ID:jyVnriUQ NG指定すると、そいつの書き込みが見えなくなるから、
そいつの書き込みに「下らないレスを付けるやつ」が減る。
そいつの書き込みに「下らないレスを付けるやつ」が減る。
589デフォルトの名無しさん
2019/05/19(日) 03:57:16.75ID:4/AsmfPZ590デフォルトの名無しさん
2019/05/19(日) 09:57:18.67ID:Ia6E6RaB 集団NGというか共有NGはPCだと無縁だからねぇ
591デフォルトの名無しさん
2019/05/28(火) 00:30:04.64ID:WhpCGVUS $ timer.sh 1h30m
引数がこう指定された場合1hと30mはどう捌けばいいんでしょう?
練習で簡易タイマーを作ったんですが時間の複数指定がどうも上手く行かず
この場合は1時間半の指定にしたいんです
一応1.5hのような数値指定にも対応はさせましたが
timer(){
for arg in "$@" ;do
if [[ "$arg" =~ ([0-9]+\.?[0-9]+?)(.?) ]] ;then
num=${BASH_REMATCH[1]}
unit=${BASH_REMATCH[2]}
case "$unit" in
[s])
count=$(bc -l <<< "scale=2;$num")
echo $(date "+%x(%a) %X") 待機:${num}秒
echo $(date "+%x(%a) %X" -d "$count sec") 再開
sleep $count
;;
...
中はこんなcase文が後mとhと続きます
まだ初学段階ですがもっとマシな書き方はありますかね
引数がこう指定された場合1hと30mはどう捌けばいいんでしょう?
練習で簡易タイマーを作ったんですが時間の複数指定がどうも上手く行かず
この場合は1時間半の指定にしたいんです
一応1.5hのような数値指定にも対応はさせましたが
timer(){
for arg in "$@" ;do
if [[ "$arg" =~ ([0-9]+\.?[0-9]+?)(.?) ]] ;then
num=${BASH_REMATCH[1]}
unit=${BASH_REMATCH[2]}
case "$unit" in
[s])
count=$(bc -l <<< "scale=2;$num")
echo $(date "+%x(%a) %X") 待機:${num}秒
echo $(date "+%x(%a) %X" -d "$count sec") 再開
sleep $count
;;
...
中はこんなcase文が後mとhと続きます
まだ初学段階ですがもっとマシな書き方はありますかね
592デフォルトの名無しさん
2019/05/28(火) 01:11:40.50ID:vCL2HYTO echo 1h30m | { echo 'scale=0;'; sed 's/h/*3600+/;s/m/*60+/;s/s//;s/+$//;s:.*:(&)/1:'; } | bc
とかかな。
とかかな。
593デフォルトの名無しさん
2019/05/28(火) 08:21:17.64ID:wDZh4gqJ とりあえずBashの[[コマンドよりsedコマンドを使ったほうがいいとは思う。
594デフォルトの名無しさん
2019/05/29(水) 19:17:53.10ID:S3MJvn1i 最近sedほとんど使わなくなった。
perl -peで代用しちゃう。
perl -peで代用しちゃう。
595デフォルトの名無しさん
2019/05/29(水) 19:32:57.87ID:UDeAAaE3 katochan -pe
596デフォルトの名無しさん
2019/05/29(水) 23:00:56.57ID:7bPFMo5i >>593
sedコマンド使うとめちゃくちゃ遅くなるぞ
sedコマンド使うとめちゃくちゃ遅くなるぞ
597デフォルトの名無しさん
2019/05/30(木) 00:09:39.31ID:nqYCZCfw >>591でめちゃめちゃ遅くなるって、頭大丈夫か?
598デフォルトの名無しさん
2019/05/30(木) 00:17:55.45ID:X2KDG1Lz >>597
10〜100倍ぐらい遅くなるだろうね。
10〜100倍ぐらい遅くなるだろうね。
599デフォルトの名無しさん
2019/05/30(木) 00:44:29.88ID:nqYCZCfw 遅いからそれがなんなの?って意味なんだけど
そんなに意味がない速さにこだわるなら、なんでもかんでもCで書くべきだろうにw
そんなに意味がない速さにこだわるなら、なんでもかんでもCで書くべきだろうにw
600デフォルトの名無しさん
2019/05/30(木) 01:22:28.57ID:X2KDG1Lz 意味があるかどうかは使い方次第
601デフォルトの名無しさん
2019/05/30(木) 02:25:31.12ID:nqYCZCfw 言っている意味がわからん。>>591でって言っているんだけど
602デフォルトの名無しさん
2019/05/30(木) 03:06:10.03ID:S0ORv27w つうかおれは>>597が意味不明だ
603デフォルトの名無しさん
2019/05/30(木) 03:17:49.10ID:nqYCZCfw >>591は何度も繰り返すわけでもなく単なるタイマー起動するまでだけという、また、例の指定時間が1h30mという
起動するのに、0.1秒かかるのと0.01秒もしくは0.001秒でになんの差があるというのか、なんでそんなとこ気になんの?病気じゃないのってとこかな
起動するのに、0.1秒かかるのと0.01秒もしくは0.001秒でになんの差があるというのか、なんでそんなとこ気になんの?病気じゃないのってとこかな
604デフォルトの名無しさん
2019/05/30(木) 19:27:13.10ID:9DfhdkhJ605デフォルトの名無しさん
2019/06/01(土) 00:35:45.39ID:qWUYdvcJ 自分の方が賢いと思って知ったかぶりしてるだけでしょ。子供にはよくあることだよ。
ここには悪質な荒らしも来るんだから、スルーできないと荒らしの思う壺じゃないかな。
ここには悪質な荒らしも来るんだから、スルーできないと荒らしの思う壺じゃないかな。
606デフォルトの名無しさん
2019/06/01(土) 08:13:31.43ID:4/16u2qR >>604
要求される精度は1分程度なんてお題に書いてあるっけ?
要求される精度は1分程度なんてお題に書いてあるっけ?
607デフォルトの名無しさん
2019/06/02(日) 08:32:31.26ID:dZpvnFnK >>606
引数が時・分なんだから、ふつーは秒単位は考慮不要と受け取るやろ
引数が時・分なんだから、ふつーは秒単位は考慮不要と受け取るやろ
608デフォルトの名無しさん
2019/06/02(日) 09:23:20.78ID:aBeO7O7s それは仕様の説明じゃないよねえ
609デフォルトの名無しさん
2019/06/02(日) 20:55:19.29ID:SX5hebJf >>608
それを言うなら,お題には「プログラムの起動が遅かったらだめ」とも書いてねーよw
だからsedを使っても何ら問題ない。
↓こんなのでいいんじゃないかな?
ちょっと抜けがある(..h..mみたいな不正な指定も通してしまう)けど
自分で使うプログラムなら,これくらい入力時に注意できるから
そこまで厳密な判定は要らないと判断した。
sleep $(echo "($(echo '1h30m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60" | bc -l)
それを言うなら,お題には「プログラムの起動が遅かったらだめ」とも書いてねーよw
だからsedを使っても何ら問題ない。
↓こんなのでいいんじゃないかな?
ちょっと抜けがある(..h..mみたいな不正な指定も通してしまう)けど
自分で使うプログラムなら,これくらい入力時に注意できるから
そこまで厳密な判定は要らないと判断した。
sleep $(echo "($(echo '1h30m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60" | bc -l)
610デフォルトの名無しさん
2019/06/02(日) 21:19:46.36ID:MyJb8SVO それだと 1.5h とかが変換できない
611デフォルトの名無しさん
2019/06/02(日) 22:34:06.55ID:XxY3JLef >>592でいいんじゃない
612デフォルトの名無しさん
2019/06/03(月) 00:56:39.44ID:amnwC05e613デフォルトの名無しさん
2019/06/03(月) 01:08:52.27ID:0fpHz+xZ Ubuntu 19.04 だと
(standard_in) 1: syntax error
sleep: missing operand
となる。
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
が (1.5h) * 60 になるので bc でエラーになる
(standard_in) 1: syntax error
sleep: missing operand
となる。
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
が (1.5h) * 60 になるので bc でエラーになる
614デフォルトの名無しさん
2019/06/03(月) 03:44:14.58ID:60TnqmAc >>613
ドットは \ でのエスケープが必用なのでは?
ドットは \ でのエスケープが必用なのでは?
615デフォルトの名無しさん
2019/06/03(月) 04:14:04.85ID:xnZUjfNJ >>592は冗長やな
echo 1h30m | { echo 'scale=0;'; sed 's/h/*3600+/;s/m/*60+/;s/s//;s/+$//;s:.*:(&)/1:'; } | bc
echo 1h30m | sed 's/h/*3600+/;s/m/*60+/;s/s/+/;s:.*:scale=0;(&0)/1:' | bc
scale=0はデフォルトだからいらんと思うけど
echo 1h30m | { echo 'scale=0;'; sed 's/h/*3600+/;s/m/*60+/;s/s//;s/+$//;s:.*:(&)/1:'; } | bc
echo 1h30m | sed 's/h/*3600+/;s/m/*60+/;s/s/+/;s:.*:scale=0;(&0)/1:' | bc
scale=0はデフォルトだからいらんと思うけど
616デフォルトの名無しさん
2019/06/03(月) 04:53:12.91ID:xnZUjfNJ >>613
仕様です。
・1h23m45s みたいな秒には対応していません。エラーになります。
・mは必須です。mを省略した場合エラーになります。1.5hの場合は1.5h00mと入力してください。
・1文字のmには対応していません。エラーになります。1mは01mと入力してください。
・mが3文字以上で文字数が奇数の場合は、対応していません。エラーになります。
・mが4文字以上で文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234m の場合 34、12.345の場合45)
・1文字のhには対応しています。
・hの文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234h の場合 34、1.23の場合23)
・hの文字数奇数の場合は、最初の1文字と下位2文字をあわせた、3文字が使用されます。(例 12345h の場合 145、123.5の場合1.5、1.23の場合23)
仕様です。
・1h23m45s みたいな秒には対応していません。エラーになります。
・mは必須です。mを省略した場合エラーになります。1.5hの場合は1.5h00mと入力してください。
・1文字のmには対応していません。エラーになります。1mは01mと入力してください。
・mが3文字以上で文字数が奇数の場合は、対応していません。エラーになります。
・mが4文字以上で文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234m の場合 34、12.345の場合45)
・1文字のhには対応しています。
・hの文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234h の場合 34、1.23の場合23)
・hの文字数奇数の場合は、最初の1文字と下位2文字をあわせた、3文字が使用されます。(例 12345h の場合 145、123.5の場合1.5、1.23の場合23)
617デフォルトの名無しさん
2019/06/03(月) 04:54:33.38ID:xnZUjfNJ618デフォルトの名無しさん
2019/06/03(月) 05:00:32.74ID:xnZUjfNJ 仕様漏れ
・hは必須です。hを省略した場合エラーになります。30mの場合は0h30mと入力してください。
・hは必須です。hを省略した場合エラーになります。30mの場合は0h30mと入力してください。
619デフォルトの名無しさん
2019/06/03(月) 05:42:18.06ID:MigZwPEH なんやこいつ。またか
620デフォルトの名無しさん
2019/06/03(月) 06:51:59.05ID:xnZUjfNJ >>619
なににムカついたの?
なににムカついたの?
621デフォルトの名無しさん
2019/06/03(月) 07:25:22.55ID:amnwC05e >>616
> ・mが4文字以上で文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234m の場合 34、12.345の場合45)
この仕様の意味ってなに?
この仕様を無視して,
「mの前の数字は2桁でなくてはならない」
という仕様に統一すれば,すごく書き易いシェルスクリプトになると思うんだけど。
> ・mが4文字以上で文字数が偶数の場合は、下位2文字のみが使用されます。(例 1234m の場合 34、12.345の場合45)
この仕様の意味ってなに?
この仕様を無視して,
「mの前の数字は2桁でなくてはならない」
という仕様に統一すれば,すごく書き易いシェルスクリプトになると思うんだけど。
622デフォルトの名無しさん
2019/06/03(月) 07:29:35.13ID:amnwC05e >>616
追加で質問。
なんでhやmの前の数字の桁数の偶奇に拘るの?
例えば,
・mの前には二桁の整数(0埋め)しか許されない
・hの前には小数点以下一位の精度で99以下の数しか許されない
という仕様のほうが,仕様も短かいし実装も簡潔になると思うんだけど。
追加で質問。
なんでhやmの前の数字の桁数の偶奇に拘るの?
例えば,
・mの前には二桁の整数(0埋め)しか許されない
・hの前には小数点以下一位の精度で99以下の数しか許されない
という仕様のほうが,仕様も短かいし実装も簡潔になると思うんだけど。
623デフォルトの名無しさん
2019/06/03(月) 08:15:05.64ID:8eXXlkO0 Ruby では、
re = /([^h]+)h([^m]+)m/
# str = "1h0m"
str = "1.5h0m"
md = str.match( re )
# p md[ 1 ], md[ 2 ] #=> capture 部分
begin # 整数じゃなければ、浮動小数点にする
hour = Integer( md[ 1 ] )
rescue ArgumentError
hour = Float( md[ 1 ] )
end
minute = md[ 2 ].to_i # 整数
p hour, minute #=> 1.5, 0
re = /([^h]+)h([^m]+)m/
# str = "1h0m"
str = "1.5h0m"
md = str.match( re )
# p md[ 1 ], md[ 2 ] #=> capture 部分
begin # 整数じゃなければ、浮動小数点にする
hour = Integer( md[ 1 ] )
rescue ArgumentError
hour = Float( md[ 1 ] )
end
minute = md[ 2 ].to_i # 整数
p hour, minute #=> 1.5, 0
624デフォルトの名無しさん
2019/06/03(月) 09:09:22.60ID:8ZNdPBG6625デフォルトの名無しさん
2019/06/03(月) 09:23:57.43ID:amnwC05e >>624
ほーん。*長文*ありがとう。
ほーん。*長文*ありがとう。
626デフォルトの名無しさん
2019/06/03(月) 09:33:21.71ID:0fpHz+xZ >>614
\([0-9.][0-9.]\)*m が入ってしまっているので、
echo "($(echo '1.5h00m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
とかするしかない
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\(\([0-9.][0-9.]\)*m\)\?/\1 * 60 + \3/')) * 60"
なんてすると、 (1.5 * 60 + ) * 60 になって bc で syntax error
\([0-9.][0-9.]\)*m が入ってしまっているので、
echo "($(echo '1.5h00m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
とかするしかない
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\(\([0-9.][0-9.]\)*m\)\?/\1 * 60 + \3/')) * 60"
なんてすると、 (1.5 * 60 + ) * 60 になって bc で syntax error
627デフォルトの名無しさん
2019/06/03(月) 09:35:00.19ID:z2LdD30j >>626
行き当たりばったりのクソコードなんか相手にしなくていいで
行き当たりばったりのクソコードなんか相手にしなくていいで
628デフォルトの名無しさん
2019/06/03(月) 09:40:07.68ID:z2LdD30j 代わりに俺が同じアプローチのまとなコード書いてやるからよ
echo '1.5h' | sed -E 's/(([0-9.]+)h)?(([0-9.]+)m)?(([0-9.]+)s)?/(\2-0)*3600+(\4-0)*60+(\6-0)/' | bc
(.0を消したければ>>615を参考に /1 すればいい)
echo '1.5h' | sed -E 's/(([0-9.]+)h)?(([0-9.]+)m)?(([0-9.]+)s)?/(\2-0)*3600+(\4-0)*60+(\6-0)/' | bc
(.0を消したければ>>615を参考に /1 すればいい)
629デフォルトの名無しさん
2019/06/03(月) 09:49:10.30ID:0fpHz+xZ やるなぁ、、て言うか相手してやってるやんw
630デフォルトの名無しさん
2019/06/03(月) 09:52:56.88ID:z2LdD30j クソコードはクソコードで終わりでいいって話
あ、クソコードですね♪使い物になりませんね♪でいいってことよ。
いちいちこういう場合にエラーがなりますとかやらなくていい
さっさと廃棄処分してしまおう。
あ、クソコードですね♪使い物になりませんね♪でいいってことよ。
いちいちこういう場合にエラーがなりますとかやらなくていい
さっさと廃棄処分してしまおう。
631623
2019/06/03(月) 11:22:16.99ID:8eXXlkO0 まず設計がおかしい!
バグのほとんどは、設計がおかしいから起きる
時間は、0〜24 の整数のみ。
分は、0〜60 の整数のみ
最大で、24時間までとか
整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!
バグのほとんどは、設計がおかしいから起きる
時間は、0〜24 の整数のみ。
分は、0〜60 の整数のみ
最大で、24時間までとか
整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!
632デフォルトの名無しさん
2019/06/03(月) 11:25:36.69ID:8qtiF3dA633デフォルトの名無しさん
2019/06/03(月) 11:26:56.98ID:amnwC05e >>632
やめたれw
やめたれw
634デフォルトの名無しさん
2019/06/03(月) 12:27:27.29ID:3fU/jk6b つまりrubyを使うと統合失調症になってしまうということ?
635デフォルトの名無しさん
2019/06/03(月) 13:18:07.10ID:amnwC05e そんなことには、ならない!
Rubyは、すばらしい言語
Rubyは、すばらしい言語
636デフォルトの名無しさん
2019/06/03(月) 13:28:47.52ID:3fU/jk6b やっぱりなってしまうんだね…
637623
2019/06/04(火) 05:26:37.80ID://1XsOfQ 整数に変換できなければ、浮動小数点に変換するとか、明らかにおかしいでしょ?
だから、質問者に言われた通りに書いたら、おかしいと言うこと!
>>631
>時間は、0〜24 の整数のみ。
>分は、0〜60 の整数のみ
多くの言語が採用しているのは、
時間は、0〜23 の整数のみ。
分は、0〜59 の整数のみ
色んな言語の、Time クラスのメソッドを参照
だから、質問者に言われた通りに書いたら、おかしいと言うこと!
>>631
>時間は、0〜24 の整数のみ。
>分は、0〜60 の整数のみ
多くの言語が採用しているのは、
時間は、0〜23 の整数のみ。
分は、0〜59 の整数のみ
色んな言語の、Time クラスのメソッドを参照
638デフォルトの名無しさん
2019/06/04(火) 05:55:02.35ID:oQKNEIyc >>623「整数に変換できなければ、浮動小数点に変換する」
↓
>>631「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
↓
>>637「質問者が整数に変換できなければ、浮動小数点に変換するって言った!浮動小数点でスレを検索してみろ!」
【検索結果】
623 名前:デフォルトの名無しさん[sage] 投稿日:2019/06/03(月) 08:15:05.64 ID:8eXXlkO0 [1/2]
631 名前:623[sage] 投稿日:2019/06/03(月) 11:22:16.99 ID:8eXXlkO0 [2/2]
637 名前:623[] 投稿日:2019/06/04(火) 05:26:37.80 ID://1XsOfQ
↓
>>631「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
↓
>>637「質問者が整数に変換できなければ、浮動小数点に変換するって言った!浮動小数点でスレを検索してみろ!」
【検索結果】
623 名前:デフォルトの名無しさん[sage] 投稿日:2019/06/03(月) 08:15:05.64 ID:8eXXlkO0 [1/2]
631 名前:623[sage] 投稿日:2019/06/03(月) 11:22:16.99 ID:8eXXlkO0 [2/2]
637 名前:623[] 投稿日:2019/06/04(火) 05:26:37.80 ID://1XsOfQ
639デフォルトの名無しさん
2019/06/04(火) 06:05:44.33ID:oQKNEIyc >>637
俺はシェルスクリプトもRubyも上級者なんだよなぁ(苦笑)
$ irb
irb(main):001:0> require 'active_support/time'
=> true
irb(main):002:0> 1.5.hours
=> 5400.0 seconds
俺はシェルスクリプトもRubyも上級者なんだよなぁ(苦笑)
$ irb
irb(main):001:0> require 'active_support/time'
=> true
irb(main):002:0> 1.5.hours
=> 5400.0 seconds
640デフォルトの名無しさん
2019/06/04(火) 11:07:03.94ID:P6ocUs46 >>638
草ァ!
草ァ!
641デフォルトの名無しさん
2019/06/04(火) 23:40:36.15ID:91A1BNDa >>591
最初に引数を"h"→"h "、"m"→"m "に変換するといいんじゃないかな
最初に引数を"h"→"h "、"m"→"m "に変換するといいんじゃないかな
642デフォルトの名無しさん
2019/06/05(水) 00:03:31.85ID:uJguGtrO 小数点を含んだ時刻表記(単位は時・分)を秒数に正規化する,みたいな話かね
643デフォルトの名無しさん
2019/06/05(水) 01:44:13.04ID:Rs8bMd2A 練習のために書いてて、うまい書き方は無いかという話だった気がするのだが…
644デフォルトの名無しさん
2019/06/05(水) 12:04:44.96ID:UTQhx3T7 だよな、単に。sedならという応えも直後にあっての
変なのが変な話に変えてる
変なのが変な話に変えてる
645デフォルトの名無しさん
2019/06/05(水) 12:17:13.51ID:HgsnwJuZ 質問者「今から1時間後とか、あと1.5時間後とかにも対応してみました」
Ruby厨「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
Ruby厨「時間は0〜24の整数のみ! 午前1時30分のことを1.5時とか言わない!」
Ruby厨「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
Ruby厨「時間は0〜24の整数のみ! 午前1時30分のことを1.5時とか言わない!」
646デフォルトの名無しさん
2019/06/05(水) 15:13:01.25ID:ufQ3ijM/ バッシュでファイル名がアスキーコードが判定する方法教えて下さい一番簡単に
アスキーコードはUTF8の一部でもあるのでnkfは確認出来ないとおもいました
アスキーコードはUTF8の一部でもあるのでnkfは確認出来ないとおもいました
647デフォルトの名無しさん
2019/06/05(水) 16:22:42.00ID:ujLKUPuk if iconv -t ASCII <<< "$filename" > /dev/null 2>&1; then
必要なら -f を。必要なら ASCII 以外の他のエンコーディングを
必要なら -f を。必要なら ASCII 以外の他のエンコーディングを
648デフォルトの名無しさん
2019/06/05(水) 16:47:06.73ID:HgsnwJuZ >>646
この程度でbash専用にする必要ない。nkfもiconvも遅い。
case $filename in
*[!a-z]*) # a-z以外の文字がある
*) # a-zのみ
esac
あとはASCIIのみになるようにすればいい
POSIX文字クラスを使うと楽
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions#Character_classes
制御コード入れたいのかにもよるのとASCIIコード以外にあてはまるかどうか調べてないが
例えば [![:cntrl:][:print:]] とかかな? 最悪一文字ずつ書けばいいだろう。
この程度でbash専用にする必要ない。nkfもiconvも遅い。
case $filename in
*[!a-z]*) # a-z以外の文字がある
*) # a-zのみ
esac
あとはASCIIのみになるようにすればいい
POSIX文字クラスを使うと楽
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions#Character_classes
制御コード入れたいのかにもよるのとASCIIコード以外にあてはまるかどうか調べてないが
例えば [![:cntrl:][:print:]] とかかな? 最悪一文字ずつ書けばいいだろう。
649デフォルトの名無しさん
2019/06/05(水) 17:15:11.07ID:xkVLsoK0650デフォルトの名無しさん
2019/06/05(水) 17:16:08.94ID:HgsnwJuZ >>649
何もおかしなところ無いんだが?
何もおかしなところ無いんだが?
651デフォルトの名無しさん
2019/06/05(水) 17:18:19.69ID:xkVLsoK0 正しく動くASCII判定のをどうぞ
652デフォルトの名無しさん
2019/06/05(水) 17:21:46.42ID:HgsnwJuZ あぁ、なにか言い返したかっただけかw
653デフォルトの名無しさん
2019/06/05(水) 17:27:42.29ID:xkVLsoK0 やはりRuby厨と変わらないw
正しく動くのを示せばいいだけでしょ、勝手にa-zだけじゃなく。それがちゃんとASCIIと判定できるなら
正しく動くのを示せばいいだけでしょ、勝手にa-zだけじゃなく。それがちゃんとASCIIと判定できるなら
654デフォルトの名無しさん
2019/06/05(水) 17:30:08.86ID:HgsnwJuZ 質問者じゃないお前と問答する意味ないよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- エッヂ落ちた?
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 中国「ジャップ、輸出入停止するわ」👈実際ガチで困るヤバいモノって何??????? [242521385]
- 【高市早苗】習近平、本気で激おこ [115996789]
- 【岸田悲報】🧑‍⚖「あれっ…そんなにズブズブなの…?」山上裁判で「安倍晋三と統一教会の関係」が次々と明らかに [559744496]
