シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
シェルスクリプト総合 その35
■ このスレッドは過去ログ倉庫に格納されています
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
2020/12/01(火) 22:56:51.43ID:C5mmwJjK
GNUやBSDのdateの拡張部分、つうてもある値(文字列な日付も含む)を日付に変換っていう部分を使えば普通に日付の計算は(簡単に)できるだろう
日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。落とし穴を避けるためにも(他の言語でも)
年月日で計算する必要のあるのは、落とし穴なんて関係ない単純な場合なだけだろう。何年何ヶ月 とか ある程度適当でいい場合とか
日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。落とし穴を避けるためにも(他の言語でも)
年月日で計算する必要のあるのは、落とし穴なんて関係ない単純な場合なだけだろう。何年何ヶ月 とか ある程度適当でいい場合とか
2020/12/01(火) 23:04:11.24ID:uBfLZ+08
しかし、そういうときはさすがにPerlだな。w
2020/12/01(火) 23:34:27.84ID:sWsOqT7L
>>86
> 外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
伝統?いつまでも古代のBourne shellなんか使ってるなよ
今は令和の時代だぞ?1988年(ksh88)はもう30年以上前だ。
そんな昔のシェルをお前は今も使ってるのか?
いい加減POSIX準拠シェルに乗り換えろ
> 外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
伝統?いつまでも古代のBourne shellなんか使ってるなよ
今は令和の時代だぞ?1988年(ksh88)はもう30年以上前だ。
そんな昔のシェルをお前は今も使ってるのか?
いい加減POSIX準拠シェルに乗り換えろ
90デフォルトの名無しさん
2020/12/01(火) 23:35:29.20ID:8hFs+PyJ >>71です
みなさんありがとうございます助かりました!
みなさんありがとうございます助かりました!
2020/12/01(火) 23:40:19.72ID:sWsOqT7L
2020/12/01(火) 23:54:59.72ID:vbtVJLvD
別にPOSIXに従ってなくても,元の質問が解決すればそれでいいと思うんだが。
ちなみにPOSIXに準拠した場合でもUNIX時刻は算出できる。
ちなみにPOSIXに準拠した場合でもUNIX時刻は算出できる。
2020/12/01(火) 23:55:29.58ID:vbtVJLvD
しかもThe Open Groupが直々にコードを書いてくれてるっていうw
2020/12/02(水) 00:02:02.37ID:FOy3G1VC
また頓珍漢にPOSIX準拠と言い出してるのかw
2020/12/02(水) 00:18:08.63ID:2qveoeUZ
POSIXバカはスルーで!
興味がある人のみ反応すれば。
興味がある人のみ反応すれば。
2020/12/02(水) 01:03:04.87ID:eXK3SZJl
2020/12/02(水) 01:11:52.81ID:s/Tj40p5
名前に反して自らの排外的な殻に閉じ籠ってる団体
2020/12/02(水) 01:31:58.00ID:fE08etha
POSIXバカと呼び名通りにすぐにバカっぷりを体現してくれる呼び名に偽りはないなw
2020/12/02(水) 04:20:55.77ID:eXK3SZJl
などと文句をいうだけ
10073
2020/12/02(水) 13:32:26.78ID:vDg6xkSY >>76
を改良した。
2020-12-02T14:00:00 のような文字列で比較している
#!/bin/bash
time='14:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
now=`date +%Y-%m-%dT%H:%M:%S`
today=`date +%Y-%m-%dT%H:%M:%S --date="$time today"`
tomorrow=`date +%Y-%m-%dT%H:%M:%S --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow #
else
echo '今日'
echo $today
fi
を改良した。
2020-12-02T14:00:00 のような文字列で比較している
#!/bin/bash
time='14:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
now=`date +%Y-%m-%dT%H:%M:%S`
today=`date +%Y-%m-%dT%H:%M:%S --date="$time today"`
tomorrow=`date +%Y-%m-%dT%H:%M:%S --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow #
else
echo '今日'
echo $today
fi
101デフォルトの名無しさん
2020/12/02(水) 18:18:18.22ID:jOtugkoA now=$(date +%Y%m%d %H%M%S)
date=${now# *
20201202 181521
4294967296
date=${now# *
20201202 181521
4294967296
102デフォルトの名無しさん
2020/12/02(水) 18:18:53.41ID:jOtugkoA すまんw 途中で書き込んでしまったw
103デフォルトの名無しさん
2020/12/02(水) 18:28:48.81ID:jOtugkoA やっぱ面倒になった >>84でいいやw
104デフォルトの名無しさん
2020/12/02(水) 20:24:18.38ID:aGDRVZCV105デフォルトの名無しさん
2020/12/02(水) 21:09:12.29ID:2qveoeUZ じゃあそれをはれよ
106デフォルトの名無しさん
2020/12/03(木) 00:15:40.19ID:qzOIs4Mf107デフォルトの名無しさん
2020/12/03(木) 00:54:27.06ID:7EFKRkup >>106
POSIXバカである行為と人物は異なる。
POSIXバカである行為と人物は異なる。
108デフォルトの名無しさん
2020/12/03(木) 01:29:53.30ID:JqlpTbiL それでUNIX時刻の定義とはどこ?
109デフォルトの名無しさん
2020/12/03(木) 01:41:47.93ID:JqlpTbiL epoch time、unix timeどちらでも調べたがやっぱりないな
110デフォルトの名無しさん
2020/12/03(木) 08:47:14.88ID:qzOIs4Mf111デフォルトの名無しさん
2020/12/03(木) 10:16:47.14ID:cLjLRJP8 優しいなw
112デフォルトの名無しさん
2020/12/03(木) 11:24:39.60ID:8fqR7feq11373
2020/12/03(木) 12:16:58.37ID:Nwj1NL2r >>100
を改良した。
date +%Y-%m-%dT%H:%M:%S を、3回使うので、変数に代入してから使う
#!/bin/bash
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow
else
echo '今日'
echo $today
fi
を改良した。
date +%Y-%m-%dT%H:%M:%S を、3回使うので、変数に代入してから使う
#!/bin/bash
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow
else
echo '今日'
echo $today
fi
114デフォルトの名無しさん
2020/12/03(木) 12:51:14.44ID:8fqR7feq115デフォルトの名無しさん
2020/12/03(木) 12:57:17.10ID:kewMsHSW POSIXといえば、>>113はデフォのdateがGNUのdateな環境用だね。
いろいろ機能拡張されているみたいで。
いろいろ機能拡張されているみたいで。
116デフォルトの名無しさん
2020/12/03(木) 13:02:33.47ID:kewMsHSW あいろいろと言ってもこの場合は--dateオプションだけど
117デフォルトの名無しさん
2020/12/03(木) 14:57:00.63ID:U4KcZC74 >>112
dateコマンドで取得できるだろ。もちろんC関数でもな
dateコマンドで取得できるだろ。もちろんC関数でもな
118デフォルトの名無しさん
2020/12/03(木) 15:05:53.69ID:8fqR7feq119デフォルトの名無しさん
2020/12/03(木) 15:07:46.18ID:U4KcZC74120デフォルトの名無しさん
2020/12/03(木) 15:11:33.39ID:U4KcZC74121デフォルトの名無しさん
2020/12/03(木) 15:15:27.80ID:3lw1+h2j122デフォルトの名無しさん
2020/12/03(木) 15:19:57.28ID:U4KcZC74123デフォルトの名無しさん
2020/12/03(木) 15:28:04.68ID:3lw1+h2j > 86400秒足したのを何月何日にするのにどうするつもりなの?
え?POSIXにその計算式があるんじゃなかったの?w
え?POSIXにその計算式があるんじゃなかったの?w
124デフォルトの名無しさん
2020/12/03(木) 15:29:22.13ID:U4KcZC74 >>123
それ、マジで言ってるの?マジなら何もわかってないってことになるぞw
それ、マジで言ってるの?マジなら何もわかってないってことになるぞw
125デフォルトの名無しさん
2020/12/03(木) 15:54:45.26ID:3lw1+h2j >>124
中身がないレスはしなくていい
中身がないレスはしなくていい
126デフォルトの名無しさん
2020/12/03(木) 15:58:19.12ID:U4KcZC74127デフォルトの名無しさん
2020/12/03(木) 16:01:23.95ID:3lw1+h2j 中身がないレスをお前が先にしたわけで、
それに対するレスにも中身が無いのは当然じゃん
早くPOSIXにその計算式はないって言いなよw
それに対するレスにも中身が無いのは当然じゃん
早くPOSIXにその計算式はないって言いなよw
128デフォルトの名無しさん
2020/12/03(木) 16:02:58.72ID:3lw1+h2j あとはっきり言っておくな
POSIXにあるのは年月日時分秒からの変換ではなく
年日時分秒からの変換。月がない。
POSIXにあるのは年月日時分秒からの変換ではなく
年日時分秒からの変換。月がない。
129デフォルトの名無しさん
2020/12/03(木) 16:06:05.70ID:U4KcZC74130デフォルトの名無しさん
2020/12/03(木) 16:07:32.44ID:U4KcZC74131デフォルトの名無しさん
2020/12/03(木) 16:08:37.33ID:3lw1+h2j もう話の流れを忘れたのか?
↓無理やろ
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
↓無理やろ
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
132デフォルトの名無しさん
2020/12/03(木) 16:17:23.67ID:U4KcZC74133デフォルトの名無しさん
2020/12/03(木) 16:19:47.96ID:U4KcZC74134デフォルトの名無しさん
2020/12/03(木) 16:22:27.43ID:3lw1+h2j > 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通
が真なら
86400秒足せばOKだろw
が真なら
86400秒足せばOKだろw
135デフォルトの名無しさん
2020/12/03(木) 16:25:05.27ID:U4KcZC74136デフォルトの名無しさん
2020/12/03(木) 16:26:23.68ID:3lw1+h2j だからPOSIXじゃ明日の10時の年月日が出せないと言ってるんだが
137デフォルトの名無しさん
2020/12/03(木) 16:30:21.85ID:U4KcZC74138デフォルトの名無しさん
2020/12/03(木) 16:31:40.83ID:U4KcZC74139デフォルトの名無しさん
2020/12/03(木) 16:33:17.90ID:3lw1+h2j だからできるだろ
日付の計算はシリアルな値でやるんだからw
日付の計算はシリアルな値でやるんだからw
140デフォルトの名無しさん
2020/12/03(木) 16:38:34.33ID:U4KcZC74 もう全くわかってませんという自己紹介はいらんぞw
ちなみに、今日(今)の明日(というかどこまでかはわからんが、何時間/何日前後) の年月日はPOSIXでもトリッキーにできそうなのは上にあるだろに
ちなみに、今日(今)の明日(というかどこまでかはわからんが、何時間/何日前後) の年月日はPOSIXでもトリッキーにできそうなのは上にあるだろに
141デフォルトの名無しさん
2020/12/03(木) 17:37:06.10ID:Glofd6fS142デフォルトの名無しさん
2020/12/03(木) 19:26:57.20ID:3lw1+h2j143デフォルトの名無しさん
2020/12/04(金) 00:45:50.04ID:ECFKf8K5 >>121
いや,date(1)の呼び出しは一回で済むでしょう。
POSIXに拘ろうが拘らまいが,「ある瞬間の24時間後」
を知りたければUNIX時刻と普通の時刻を変換すればいい。
ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
って思ってる人も居そうだが,普通にできる。
いや,date(1)の呼び出しは一回で済むでしょう。
POSIXに拘ろうが拘らまいが,「ある瞬間の24時間後」
を知りたければUNIX時刻と普通の時刻を変換すればいい。
ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
って思ってる人も居そうだが,普通にできる。
144デフォルトの名無しさん
2020/12/04(金) 01:18:58.36ID:iavYwWUx Dateとして一回Calendarとして一回、二回は必要だろう
元のはCalendarとして二回使ってる感じかな
何言っているかわからんだろうけど
元のはCalendarとして二回使ってる感じかな
何言っているかわからんだろうけど
145デフォルトの名無しさん
2020/12/04(金) 01:24:55.12ID:HyuHUD7c146デフォルトの名無しさん
2020/12/04(金) 01:25:29.92ID:HyuHUD7c147デフォルトの名無しさん
2020/12/04(金) 01:48:29.11ID:HyuHUD7c148デフォルトの名無しさん
2020/12/04(金) 01:59:44.65ID:8vYOAEQt 論より証拠というやつで、実際にスクリプトを書いてみたらいいんだ
で書けたらそれを貼る、書けなかったらごめんなさいする
で書けたらそれを貼る、書けなかったらごめんなさいする
149デフォルトの名無しさん
2020/12/04(金) 02:08:43.91ID:iavYwWUx >>147
POSIXもそうだが、概念としてのDate(Time)とCalendarは当然のようにあるってことだよ
dateコマンドは機能は限定されているがその2つの概念を内包してる。他の言語ではクラスとして明確にわかりやすいように(?)存在するってだけだな
POSIXは「システムクロックを」に固執/それ対象なのが痛くてあまり使えなさそうなだけで
POSIXもそうだが、概念としてのDate(Time)とCalendarは当然のようにあるってことだよ
dateコマンドは機能は限定されているがその2つの概念を内包してる。他の言語ではクラスとして明確にわかりやすいように(?)存在するってだけだな
POSIXは「システムクロックを」に固執/それ対象なのが痛くてあまり使えなさそうなだけで
150デフォルトの名無しさん
2020/12/04(金) 02:33:22.25ID:3npkCfBA 普通の暮らしで使ってる日付なのに
普通の暮らしで接してるからこんな話題でもあまりよく考えてないから計算でできると思い込んで言っちゃうんだろうな。今までそういうのも書いたこともなく
そんなのが機会があって自分で書いたら落とし穴に落ちたのを書きそう
さすがに今時はそう見事に簡単に落とし穴に落ちたのを書かないとは思うが、書きそうでもある
普通の暮らしで接してるからこんな話題でもあまりよく考えてないから計算でできると思い込んで言っちゃうんだろうな。今までそういうのも書いたこともなく
そんなのが機会があって自分で書いたら落とし穴に落ちたのを書きそう
さすがに今時はそう見事に簡単に落とし穴に落ちたのを書かないとは思うが、書きそうでもある
151デフォルトの名無しさん
2020/12/04(金) 08:13:05.53ID:HyuHUD7c152デフォルトの名無しさん
2020/12/04(金) 08:32:14.34ID:8vYOAEQt ふつうJavaのプログラミングの経験ぐらいないか? ないのかw
なんか話がこじれてるが、dateコマンドの呼び出しを1回で済ませると言った人、
そーす(スクリプト)ぷりーず。
なんか話がこじれてるが、dateコマンドの呼び出しを1回で済ませると言った人、
そーす(スクリプト)ぷりーず。
153デフォルトの名無しさん
2020/12/04(金) 09:43:14.21ID:HyuHUD7c154デフォルトの名無しさん
2020/12/04(金) 10:31:19.91ID:ySoYx7WA Java”だけ"だと思ってるんだからなあ。知識が無さすぎなのが顕著だな
こいついつものやつか?
自分の知らないこと話すなマウント取れないからってことだろうとしか思えないw
こいついつものやつか?
自分の知らないこと話すなマウント取れないからってことだろうとしか思えないw
15573
2020/12/04(金) 10:53:02.32ID:sfksvFP9 >>113
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
これは、日をまたいだ場合に、バグる。
例えば、nowが4日で、todayが5日で、tomorrowが6日とか
複数回コマンドを呼ぶと、その間も時間が進むから、バグる。
1回だけコマンドを呼ぶ方が安全
ただし、処理している間も時間が進むから、
9:59:59 秒に、処理を開始して、10:00:00 と解答を得たとしても、
処理が終わった時には、その時刻を過ぎているかも知れない
それと、夏時間・うるう秒などにも、注意
time='12:00' # 求める時間
# 現在・今日・明日の文字列。年月日-時分秒。2020-12-02T14:00:00
com='date +%Y-%m-%dT%H:%M:%S'
now=`$com`
today=`$com --date="$time today"`
tomorrow=`$com --date="$time tomorrow"`
これは、日をまたいだ場合に、バグる。
例えば、nowが4日で、todayが5日で、tomorrowが6日とか
複数回コマンドを呼ぶと、その間も時間が進むから、バグる。
1回だけコマンドを呼ぶ方が安全
ただし、処理している間も時間が進むから、
9:59:59 秒に、処理を開始して、10:00:00 と解答を得たとしても、
処理が終わった時には、その時刻を過ぎているかも知れない
それと、夏時間・うるう秒などにも、注意
156デフォルトの名無しさん
2020/12/04(金) 11:07:30.74ID:ECFKf8K5 echo $(( $(TZ=GMT0 date \
+"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+1%j-1000-135140)\
*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)") ))
↑これで現在のUnix時刻が求まる。
これに「明日まで」の秒数を足して
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv
↑これで元の時刻表記に変換し直せばいい。
+"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+1%j-1000-135140)\
*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)") ))
↑これで現在のUnix時刻が求まる。
これに「明日まで」の秒数を足して
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/utconv
↑これで元の時刻表記に変換し直せばいい。
157デフォルトの名無しさん
2020/12/04(金) 12:46:44.71ID:yENL1Rc+ それって date +%s じゃ駄目なんだっけ。
time=12:00:00 として、
now=$(date +%s) で現在の時刻をUNIX時刻で求めたら
$(date -d @$now +%Y-%m-%dT$time) が今日の time の日付、よって
$(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) がそのUNIX時刻。
これに86400秒を足して明日の時刻にするとして
$(($(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) + 86400)) が明日の time の
UNIX時刻。
でこれらを更にdateに渡してそれぞれの時刻列を得る。dateメチャクチャ呼びまくりw
time=12:00:00 として、
now=$(date +%s) で現在の時刻をUNIX時刻で求めたら
$(date -d @$now +%Y-%m-%dT$time) が今日の time の日付、よって
$(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) がそのUNIX時刻。
これに86400秒を足して明日の時刻にするとして
$(($(date +%s -d $(date -d @$now +%Y-%m-%dT$time)) + 86400)) が明日の time の
UNIX時刻。
でこれらを更にdateに渡してそれぞれの時刻列を得る。dateメチャクチャ呼びまくりw
158デフォルトの名無しさん
2020/12/04(金) 12:55:10.42ID:HyuHUD7c159デフォルトの名無しさん
2020/12/04(金) 12:55:33.77ID:HyuHUD7c160デフォルトの名無しさん
2020/12/04(金) 12:55:34.58ID:yENL1Rc+161デフォルトの名無しさん
2020/12/04(金) 13:04:25.05ID:HyuHUD7c ネパールって時差15分単位のずれなのかw
https://nepal-lovers.com/2017/10/nepal-time-difference/
https://nepal-lovers.com/2017/10/nepal-time-difference/
162デフォルトの名無しさん
2020/12/04(金) 13:22:53.16ID:2+VKdPy1 なぜかチョンは日本と同じにしてる
日本のほうが早いなんて許せないらしい
誇り高い民族だよね。あっぱれ!
日本のほうが早いなんて許せないらしい
誇り高い民族だよね。あっぱれ!
163デフォルトの名無しさん
2020/12/04(金) 13:35:49.85ID:HyuHUD7c 朝鮮は、日本の最西端と最東端の間にあるだろ
164デフォルトの名無しさん
2020/12/04(金) 18:33:51.60ID:9vuroJRJ >>158
概念としての話だってのに、概念がわかりませんだからなあ
POSIXのそこらのC関数も当てはまる話だってのに、概念がわからないんだからなあ
概念の例としてわかりやすい形になってるのが、オブジェクトな言語でのフレームワークでって話なんだが、理解する気もなく「言うな」なんだからなあ
お前は入ってこなくていいよ、もう理解する気もなく文句言うだけなんだから
概念としての話だってのに、概念がわかりませんだからなあ
POSIXのそこらのC関数も当てはまる話だってのに、概念がわからないんだからなあ
概念の例としてわかりやすい形になってるのが、オブジェクトな言語でのフレームワークでって話なんだが、理解する気もなく「言うな」なんだからなあ
お前は入ってこなくていいよ、もう理解する気もなく文句言うだけなんだから
165デフォルトの名無しさん
2020/12/04(金) 18:42:24.91ID:gBsgQLOE Javaや特定言語専用の概念を
このスレでするなって話だろ
このスレでするなって話だろ
166デフォルトの名無しさん
2020/12/04(金) 18:46:53.85ID:9vuroJRJ >>160
$ TZ=GMT-9 date;TZ=GMT-8:59 date
Fri Dec 4 18:39:52 GMT 2020
Fri Dec 4 18:38:52 GMT 2020
使えそうではあるね。Linux/BSD共に
だがしかし、Linuxでは最大は24時間(24時間59分?)のよう。実際の時差(日本では9時間が入るからそれがプラマイ。使えねぇ。まあLinuxならdateはGNU dateに決まってる(?)だろうから無理してPOSIXに拘ることもないか
ちなみに、BSDは168(何やこの中途半端なと思ったら7日1週間だった)
$ TZ=GMT-9 date;TZ=GMT-8:59 date
Fri Dec 4 18:39:52 GMT 2020
Fri Dec 4 18:38:52 GMT 2020
使えそうではあるね。Linux/BSD共に
だがしかし、Linuxでは最大は24時間(24時間59分?)のよう。実際の時差(日本では9時間が入るからそれがプラマイ。使えねぇ。まあLinuxならdateはGNU dateに決まってる(?)だろうから無理してPOSIXに拘ることもないか
ちなみに、BSDは168(何やこの中途半端なと思ったら7日1週間だった)
167デフォルトの名無しさん
2020/12/04(金) 18:47:46.31ID:NVkYzPbW でもまあどちらにしろdateを2回呼んでるからタイミング次第ではバグになるよね
168デフォルトの名無しさん
2020/12/04(金) 18:49:06.33ID:NVkYzPbW > まあLinuxならdateはGNU dateに決まってる(?)だろうから
Alpine LinuxだとBusyBox
Alpine LinuxだとBusyBox
169デフォルトの名無しさん
2020/12/04(金) 18:50:44.54ID:9vuroJRJ >>165
>POSIXのそこらのC関数も当てはまる話だってのに、〜
>概念の例としてわかりやすい形になってるのが、〜
って言ってるのに。読めなさすぎだろう。方々で似たような実装なのは、特定言語特有の話ではなくコンピュータサイエンスwとしてのだからだろうにな
シェルスクリプトしか知りません興味ありませんすぎだろう
>POSIXのそこらのC関数も当てはまる話だってのに、〜
>概念の例としてわかりやすい形になってるのが、〜
って言ってるのに。読めなさすぎだろう。方々で似たような実装なのは、特定言語特有の話ではなくコンピュータサイエンスwとしてのだからだろうにな
シェルスクリプトしか知りません興味ありませんすぎだろう
170デフォルトの名無しさん
2020/12/04(金) 18:55:02.87ID:9vuroJRJ171デフォルトの名無しさん
2020/12/04(金) 20:20:16.74ID:9vuroJRJ >>170,169
機能削除してるくせにオレオレもなのか...?? GNUソースベースというより新規なのかな?
BusyBox環境を試す気は全くないので何とくなくこんなんなんだろうという仮定で、
SEC2DATE="$(date --help 2>&1 | awk '
/-f fmt/{ print "date -j -f %s "; m=1; exit 0; } # BSD
/-D FMT/{ print "date -D %s -d "; m=1; exit 0; } # BusyBox case1
/-D FMT/{ print "date -d 1970.01.01-00:00:"; m=1; exit 0; } # BusyBox case2
END{ if(!m) print "date -d @"; }')" # default to GNU
な感じで吸収してみた(判断材料とかはお好きに。OSの種類で決め打ちとかな)
case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
いや、その役割はPOSIXか。必要最低限のこれらだけを入れてくれればCalendar(しつこいw)として「使える」のに(システムタイムにこだわるならBSDのが素直かなw)
secs=$(date +%s)
[ $($SEC2DATE$secs +%H) -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
実際はこれだけをしたいだけなのにな。どれかに統一されてたらもっと素直な表記で書けるのに
date回数に煩いんだったら
read secs hh < <(date +'%s %H')
[ $hh -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
とかにでもとかとか。ある意味もっと素直かなw
機能削除してるくせにオレオレもなのか...?? GNUソースベースというより新規なのかな?
BusyBox環境を試す気は全くないので何とくなくこんなんなんだろうという仮定で、
SEC2DATE="$(date --help 2>&1 | awk '
/-f fmt/{ print "date -j -f %s "; m=1; exit 0; } # BSD
/-D FMT/{ print "date -D %s -d "; m=1; exit 0; } # BusyBox case1
/-D FMT/{ print "date -d 1970.01.01-00:00:"; m=1; exit 0; } # BusyBox case2
END{ if(!m) print "date -d @"; }')" # default to GNU
な感じで吸収してみた(判断材料とかはお好きに。OSの種類で決め打ちとかな)
case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
いや、その役割はPOSIXか。必要最低限のこれらだけを入れてくれればCalendar(しつこいw)として「使える」のに(システムタイムにこだわるならBSDのが素直かなw)
secs=$(date +%s)
[ $($SEC2DATE$secs +%H) -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
実際はこれだけをしたいだけなのにな。どれかに統一されてたらもっと素直な表記で書けるのに
date回数に煩いんだったら
read secs hh < <(date +'%s %H')
[ $hh -ge 10 ] && secs=$((secs + 86400))
$SEC2DATE$secs +'%Y-%m-%d 10:00:00'
とかにでもとかとか。ある意味もっと素直かなw
172デフォルトの名無しさん
2020/12/04(金) 20:48:41.94ID:C8tBrA1L > case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
まあ、それだな。
macOSもあるのでLinuxだけに準拠すればいいという時代じゃない
あとawkとかやめてくれまじで
まあ、それだな。
macOSもあるのでLinuxだけに準拠すればいいという時代じゃない
あとawkとかやめてくれまじで
173デフォルトの名無しさん
2020/12/04(金) 20:51:59.59ID:9vuroJRJ >>172
> awkとかやめてくれまじで
別に同じようなことできる他のを使えばいいだろう。そっちが素直に書けると思うなら、そういうように読み替えて
失礼ながら、マジでは以後も無視します。別に拘ってるわけでもないしね(使うことに/使わないことにどっちも)
> awkとかやめてくれまじで
別に同じようなことできる他のを使えばいいだろう。そっちが素直に書けると思うなら、そういうように読み替えて
失礼ながら、マジでは以後も無視します。別に拘ってるわけでもないしね(使うことに/使わないことにどっちも)
174デフォルトの名無しさん
2020/12/04(金) 20:53:34.79ID:C8tBrA1L > 別に同じようなことできる他の
ってなに?まさかPerlとは言わないよね?w
ってなに?まさかPerlとは言わないよね?w
175デフォルトの名無しさん
2020/12/04(金) 20:56:17.67ID:9vuroJRJ176デフォルトの名無しさん
2020/12/04(金) 21:51:54.12ID:rhOsBffZ (意訳) クッソー、マウント取れねぇじゃねぇか
177デフォルトの名無しさん
2020/12/04(金) 22:06:43.73ID:ECFKf8K5178デフォルトの名無しさん
2020/12/04(金) 22:08:20.50ID:ECFKf8K5179デフォルトの名無しさん
2020/12/04(金) 22:08:45.95ID:DO1guVvJ へえ
180デフォルトの名無しさん
2020/12/04(金) 22:11:28.39ID:UZX5oUlx181デフォルトの名無しさん
2020/12/04(金) 22:16:33.20ID:A/IGOY0L そう取るのも病気だな
182デフォルトの名無しさん
2020/12/04(金) 22:20:28.57ID:UZX5oUlx 反論は無しと、φ(..)メモメモ
183デフォルトの名無しさん
2020/12/04(金) 22:24:14.25ID:aYzT9jgU184デフォルトの名無しさん
2020/12/04(金) 22:26:47.45ID:UZX5oUlx ほらやっぱり反論は無しと、φ(..)メモメモ
185デフォルトの名無しさん
2020/12/04(金) 22:29:34.69ID:aYzT9jgU186デフォルトの名無しさん
2020/12/04(金) 22:36:07.76ID:UZX5oUlx 反対しないならレスしないでよ
POSIX準拠のクソ長いコードがでるのをまってるの
POSIX準拠のクソ長いコードがでるのをまってるの
■ このスレッドは過去ログ倉庫に格納されています
