シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
523デフォルトの名無しさん
2019/05/16(木) 20:10:15.17ID:RxfYxsuF Unicodeでの漢数字を字の意味での大小ってどこでサポートしてんだろ?
コマンドでは無いかなあ。数字(数値)ならLibreOfficeのSpreadSheetならと思ったらこれも字の意味の数字ではなくてなんか文字(文字コード)としてかな
基本的に C standard library がサポートしている範囲でそれがそこまででしかないのはある意味当たり前といえばあたりまえだと思うけどね
いろいろ作っているのがASCIIコードで十分な外人だから。bashも4.0になってstrcmpからstrcollに変えたぐらいという
コマンドでは無いかなあ。数字(数値)ならLibreOfficeのSpreadSheetならと思ったらこれも字の意味の数字ではなくてなんか文字(文字コード)としてかな
基本的に C standard library がサポートしている範囲でそれがそこまででしかないのはある意味当たり前といえばあたりまえだと思うけどね
いろいろ作っているのがASCIIコードで十分な外人だから。bashも4.0になってstrcmpからstrcollに変えたぐらいという
524デフォルトの名無しさん
2019/05/16(木) 20:16:24.45ID:M/ddkVVC 誰もC standard libraryでサポートしてる範囲とか
大幅な制限は書けてないんだが?w
大幅な制限は書けてないんだが?w
525デフォルトの名無しさん
2019/05/16(木) 20:21:36.45ID:RxfYxsuF それが当然のように多数=スタンダードじゃねという意味なんだけどね
漢数字で大小が必要な場合があった場合は何を使うのかなあという疑問だね
漢数字で大小が必要な場合があった場合は何を使うのかなあという疑問だね
526デフォルトの名無しさん
2019/05/16(木) 21:35:37.24ID:GZCrvmyy まあ、どうしても必要なら…漢数字から変換できるよ。
https://metacpan.org/pod/Lingua::JA::Numbers
https://metacpan.org/pod/Lingua::JA::Numbers
527デフォルトの名無しさん
2019/05/16(木) 21:39:30.50ID:RxfYxsuF perlは数値比較としては漢数字対応してんのね。あくまでも数値としてだけっぽいけど
528デフォルトの名無しさん
2019/05/16(木) 21:43:04.24ID:RxfYxsuF529デフォルトの名無しさん
2019/05/16(木) 21:50:25.27ID:RxfYxsuF 勘違いしてた。Shift-JISでも同じなのか。そうだったのか...
そもそも漢数字をコンピュータで数字(数値)として扱うことなんて全くはなから考えていないのか、先人も後の人も
そもそも漢数字をコンピュータで数字(数値)として扱うことなんて全くはなから考えていないのか、先人も後の人も
530デフォルトの名無しさん
2019/05/16(木) 22:38:22.35ID:M/ddkVVC いい加減、漢数字の話はやめようか?
今は文字列の大小の話だから
今は文字列の大小の話だから
531デフォルトの名無しさん
2019/05/16(木) 22:49:36.61ID:vwl5T96/ 漢数字って日常で使うには便利だけど、コンピューターに処理させると面倒だなぁw
Unicode共同事業体によると一→1みたいな変換を文字コードレベルでサポートするかもしれないそうだけど。
Unicode共同事業体によると一→1みたいな変換を文字コードレベルでサポートするかもしれないそうだけど。
532デフォルトの名無しさん
2019/05/16(木) 22:53:13.17ID:M/ddkVVC うわ。また無視した。話すり替えようとしてるのミエミエw
533デフォルトの名無しさん
2019/05/16(木) 23:19:20.59ID:RxfYxsuF >>531
>サポートするかもしれないそうだけど
ほほう、やっとというか、なにかやる余裕ができてきたのかな
最初にああいう位置に置いた昔の日本人が悪の根源wだろな。漢数字ではなく単なる漢字としてしまったんだろうな
>サポートするかもしれないそうだけど
ほほう、やっとというか、なにかやる余裕ができてきたのかな
最初にああいう位置に置いた昔の日本人が悪の根源wだろな。漢数字ではなく単なる漢字としてしまったんだろうな
534デフォルトの名無しさん
2019/05/17(金) 00:47:55.04ID:3QkpWifH535デフォルトの名無しさん
2019/05/17(金) 00:51:43.23ID:6dJ1FJgX >>534
シェルスクリプトの話じゃないから
シェルスクリプトの話じゃないから
536デフォルトの名無しさん
2019/05/17(金) 01:06:08.58ID:3QkpWifH >>535
シェルスクリプトで漢数字の比較をする話じゃないの?
シェルスクリプトで漢数字の比較をする話じゃないの?
537デフォルトの名無しさん
2019/05/17(金) 01:08:01.02ID:6dJ1FJgX シェルスクリプトで文字列を比較するにはどうするの?
→バカ「文字列の比較って、文字列の長さの比較のことやろ」
→バカ2「文字列の比較って、漢数字の比較のことやろ」
→バカ「文字列の比較って、文字列の長さの比較のことやろ」
→バカ2「文字列の比較って、漢数字の比較のことやろ」
538デフォルトの名無しさん
2019/05/17(金) 01:26:08.63ID:0VI+S8bl >>523が理解できないバカ発見w
539デフォルトの名無しさん
2019/05/17(金) 01:32:13.98ID:AJ2dA4T/540デフォルトの名無しさん
2019/05/17(金) 01:38:07.48ID:0VI+S8bl そもそも>>436の決め付けとか。こいつの価値観マジやばいわ
541デフォルトの名無しさん
2019/05/17(金) 01:44:31.45ID:eic3Lxe/ >>539
コード表中のコード位置でしかないから。単に最初にでもまとめて順番に置いておけばいいだけじゃないかと
数字+助数詞とは別の話。数字+助数詞とかの概念はIMEなどの辞書での話で、文字がコードのどの位置にあるのかはそれにすら関係ないでしょう
コード表中のコード位置でしかないから。単に最初にでもまとめて順番に置いておけばいいだけじゃないかと
数字+助数詞とは別の話。数字+助数詞とかの概念はIMEなどの辞書での話で、文字がコードのどの位置にあるのかはそれにすら関係ないでしょう
542デフォルトの名無しさん
2019/05/17(金) 02:08:22.65ID:4Xorvfdj543デフォルトの名無しさん
2019/05/17(金) 02:37:54.71ID:3QkpWifH >>542
だからそれは派生した別の話だって言ってんだろしつこい奴だな
だからそれは派生した別の話だって言ってんだろしつこい奴だな
544デフォルトの名無しさん
2019/05/17(金) 02:45:24.41ID:+DCiWWVl >>543
だからその「派生した別の話」は「シェルスクリプトの話」ではないからよそでやれ
だからその「派生した別の話」は「シェルスクリプトの話」ではないからよそでやれ
545デフォルトの名無しさん
2019/05/17(金) 06:23:14.33ID:3QkpWifH >>544
シェルスクリプトでやる場合の話だからここでいいだろ何回言わせんだ
シェルスクリプトでやる場合の話だからここでいいだろ何回言わせんだ
546デフォルトの名無しさん
2019/05/17(金) 07:03:46.75ID:+DCiWWVl >>545
じゃあさっさとシェルスクリプトでやる話をしろよ
漢数字とはなにか?の話しかしてないだろ
お前がシェルスクリプト以前の話で止まって決められないなら
俺が仕様を定義してやるから
まず使用する文字は一 二 三 四 五 六 七 八 九 十の10種類で1文字だけ(零はなし)
これをシェルスクリプトだけで(外部コマンド呼び出しなしで)比較する方法を書け
それが終わったら使用する文字は同じく一 二 三 四 五 六 七 八 九 十 百 千 の12種類で
九千九百九十九まで。ただし一二みたいな書き方はなし。十二、二十二、二千二のように
必ず十や百や千を含めることする
最後に一 二 三 四 五 六 七 八 九 十 百 千 万 億の14種類で
九千九百九十九億 九千九百九十九万 九千九百九十九まで。
いずれも、以下のような1対1の対応表は作ってはならない。
case
略
"十二")i=12 ;;
"二十二")i=22 ;;
略
case
じゃあさっさとシェルスクリプトでやる話をしろよ
漢数字とはなにか?の話しかしてないだろ
お前がシェルスクリプト以前の話で止まって決められないなら
俺が仕様を定義してやるから
まず使用する文字は一 二 三 四 五 六 七 八 九 十の10種類で1文字だけ(零はなし)
これをシェルスクリプトだけで(外部コマンド呼び出しなしで)比較する方法を書け
それが終わったら使用する文字は同じく一 二 三 四 五 六 七 八 九 十 百 千 の12種類で
九千九百九十九まで。ただし一二みたいな書き方はなし。十二、二十二、二千二のように
必ず十や百や千を含めることする
最後に一 二 三 四 五 六 七 八 九 十 百 千 万 億の14種類で
九千九百九十九億 九千九百九十九万 九千九百九十九まで。
いずれも、以下のような1対1の対応表は作ってはならない。
case
略
"十二")i=12 ;;
"二十二")i=22 ;;
略
case
547デフォルトの名無しさん
2019/05/17(金) 07:06:02.53ID:+DCiWWVl つーか、これ文字列比較に比べて簡単すぎだろ(笑)
548デフォルトの名無しさん
2019/05/17(金) 07:08:41.43ID:+DCiWWVl >>546に書いてない例外のパターン(例 百百 みたいなありえないもの)には
対応する必要はなし。いちいち仕様の抜け穴を探そうとする輩が多いからなw
対応する必要はなし。いちいち仕様の抜け穴を探そうとする輩が多いからなw
549デフォルトの名無しさん
2019/05/17(金) 07:14:37.25ID:+DCiWWVl あとこれが終わったら、この応用(?)で
文字列の比較をシェルスクリプトだけでやる方法を答えるように
文字列の比較をシェルスクリプトだけでやる方法を答えるように
550デフォルトの名無しさん
2019/05/17(金) 07:19:17.37ID:eic3Lxe/ >>543,545
全くそのつもりのそのとおり
誰かみたいに俺正しいという論争wしたいわけでもなし、何が気に食わないのかわからんw
何様なんかどういうつもりなのかわからんから、(直接)相手にしない方がよいよ。どうも子供のようだから言ってもわからんだろう
全くそのつもりのそのとおり
誰かみたいに俺正しいという論争wしたいわけでもなし、何が気に食わないのかわからんw
何様なんかどういうつもりなのかわからんから、(直接)相手にしない方がよいよ。どうも子供のようだから言ってもわからんだろう
551デフォルトの名無しさん
2019/05/17(金) 08:57:56.14ID:9c2BcXsa 問題に難癖つけたいだけで、シェルスクリプトで
実装するという話になったらだんまりなのが
ばれたなw
実装するという話になったらだんまりなのが
ばれたなw
552デフォルトの名無しさん
2019/05/17(金) 10:17:57.59ID:SV+iTwUF アンカーが何のためにあると思ってるんだ
一つのスレで一つの話題しか許されないと思っているなら
さっさと逝ったほうがいい
一つのスレで一つの話題しか許されないと思っているなら
さっさと逝ったほうがいい
553デフォルトの名無しさん
2019/05/17(金) 10:53:33.15ID:AJ2dA4T/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以下の数しか許されない
という仕様のほうが,仕様も短かいし実装も簡潔になると思うんだけど。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 俺「お湯を流してと…」シンク「ボンッw」
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 生活保護を受けている私ですが、おはようございます!
- もう寝ます
- (´・ω・`)友達は売れるよ
