シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
探検
シェルスクリプト総合 その35
■ このスレッドは過去ログ倉庫に格納されています
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
2020/11/28(土) 17:49:02.21ID:FGpMIdZG
AWS のCodeDeploy には、sudo yum install ruby
と書いてあるから、Ruby製
CloudFormation では、Ruby製のChef, Cookpad製のItamae, Kumogata2 を使える
バックエンドの環境構築運用では、
複雑なものは、シェルスクリプトよりも、Rubyで書く
と書いてあるから、Ruby製
CloudFormation では、Ruby製のChef, Cookpad製のItamae, Kumogata2 を使える
バックエンドの環境構築運用では、
複雑なものは、シェルスクリプトよりも、Rubyで書く
2020/11/28(土) 18:12:07.68ID:u/XOSRZ8
>>68
もうこれに尽きるな。
Fishシェルのことを扱う別のスレを建てるんじゃなくて,
POSIXシェルのシェルとしての機能(for文, set命令とか)のみを
扱う専門スレを建てればいい。
「総合」とある以上,ここでは前者を含んだ話題を扱うべきだ。
もうこれに尽きるな。
Fishシェルのことを扱う別のスレを建てるんじゃなくて,
POSIXシェルのシェルとしての機能(for文, set命令とか)のみを
扱う専門スレを建てればいい。
「総合」とある以上,ここでは前者を含んだ話題を扱うべきだ。
71デフォルトの名無しさん
2020/12/01(火) 08:36:50.52ID:2728+f2c dateコマンドで「今日の10時」などではなく「次に来る10時」を求める方法をご存知の方教えてください!
2020/12/01(火) 10:32:35.01ID:XcHTxxjN
date?おいやめろ。またPOSIXの話になるじゃねーか!
2020/12/01(火) 12:42:30.34ID:WP+WGTcn
文字列での表示は出来るけど、
プログラミング的な時間オブジェクトの比較とかは、出来ないかも
Ruby などのプログラミング言語なら、時間オブジェクトで比較できる
date --iso-8601=hours --date='15:00 today'
2020-12-01T15+09:00
date --iso-8601=hours --date='15:00 next day'
2020-12-02T15+09:00
プログラミング的な時間オブジェクトの比較とかは、出来ないかも
Ruby などのプログラミング言語なら、時間オブジェクトで比較できる
date --iso-8601=hours --date='15:00 today'
2020-12-01T15+09:00
date --iso-8601=hours --date='15:00 next day'
2020-12-02T15+09:00
7473
2020/12/01(火) 12:48:04.25ID:WP+WGTcn 現在・今日・明日の文字列で、文字列として比較できるかも知れない
date --iso-8601=seconds
2020-12-01T12:44:54+09:00
date --iso-8601=seconds --date='15:00 today'
2020-12-01T15:00:00+09:00
date --iso-8601=seconds --date='15:00 next day'
2020-12-02T15:00:00+09:00
date --iso-8601=seconds
2020-12-01T12:44:54+09:00
date --iso-8601=seconds --date='15:00 today'
2020-12-01T15:00:00+09:00
date --iso-8601=seconds --date='15:00 next day'
2020-12-02T15:00:00+09:00
7673
2020/12/01(火) 14:53:07.28ID:WP+WGTcn bash 限定で。
zsh では、[ $today \< $now ] が動かないとか、どこかのサイトに書いてあったので
#!/bin/bash
# 現在・今日・明日の文字列
now=`date --iso-8601=seconds`
today=`date --iso-8601=seconds --date='14:00 today'`
tomorrow=`date --iso-8601=seconds --date='14:00 tomorrow'`
# echo $now # 2020-12-01T14:41:29+09:00
# echo $today # 2020-12-01T14:00:00+09:00
# echo $tomorrow # 2020-12-02T14:00:00+09:00
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow # 2020-12-02T14:00:00+09:00
else
echo '今日'
echo $today
fi
zsh では、[ $today \< $now ] が動かないとか、どこかのサイトに書いてあったので
#!/bin/bash
# 現在・今日・明日の文字列
now=`date --iso-8601=seconds`
today=`date --iso-8601=seconds --date='14:00 today'`
tomorrow=`date --iso-8601=seconds --date='14:00 tomorrow'`
# echo $now # 2020-12-01T14:41:29+09:00
# echo $today # 2020-12-01T14:00:00+09:00
# echo $tomorrow # 2020-12-02T14:00:00+09:00
# 今日が現在よりも前なら、明日。
# それ以外は、今日
if [ $today \< $now ]; then
echo '明日'
echo $tomorrow # 2020-12-02T14:00:00+09:00
else
echo '今日'
echo $today
fi
2020/12/01(火) 17:23:30.11ID:sVIjNcb4
>>71
YYYY MM DD HH フォーマットを返すようにしてdateを呼び出す
if [ HH < 10 ]; then
echo YYYY MM DD 10 00 00
else
echo YYYY MM DD+1 10 00 00
fi
あとよろ
DDが月末だったら問題あるから気をつけな
YYYY MM DD HH フォーマットを返すようにしてdateを呼び出す
if [ HH < 10 ]; then
echo YYYY MM DD 10 00 00
else
echo YYYY MM DD+1 10 00 00
fi
あとよろ
DDが月末だったら問題あるから気をつけな
2020/12/01(火) 17:39:46.39ID:gqqffooe
>>77
10時を過ぎても11時までなら今日の10時が返されるんじゃ?
10時を過ぎても11時までなら今日の10時が返されるんじゃ?
2020/12/01(火) 17:50:56.66ID:sVIjNcb4
うん、あとよろw
2020/12/01(火) 17:52:38.86ID:sVIjNcb4
思ったんだがシェルスクリプトって日付の計算ができないんだな
そういうライブラリってないのか?
そういうライブラリってないのか?
2020/12/01(火) 18:03:57.84ID:/3zv7uXC
数字の計算はシェルスクリプト向けではないなあ
2020/12/01(火) 18:09:45.30ID:XaSziyAo
シェルスクリプトで数字の計算は普通にできるやろ?
rubyとかpythonとか便利ライブラリ盛りだくさんな温室で
育ってきたやつは知らんだろうけど
C言語だって日付の計算はできないんだぞ
ライブラリを作るか使うかしてやっと実現できること
ライブラリを誰かが用意してくれなきゃプログラミングができないとか
技術力もほんと落ちたもんだわw
rubyとかpythonとか便利ライブラリ盛りだくさんな温室で
育ってきたやつは知らんだろうけど
C言語だって日付の計算はできないんだぞ
ライブラリを作るか使うかしてやっと実現できること
ライブラリを誰かが用意してくれなきゃプログラミングができないとか
技術力もほんと落ちたもんだわw
2020/12/01(火) 18:28:45.10ID:xl/Y0HIa
>>71
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-23;echo $(TZ=$tz date +%D) 10:00
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-23;echo $(TZ=$tz date +%D) 10:00
2020/12/01(火) 18:31:08.89ID:xl/Y0HIa
2020/12/01(火) 20:27:54.30ID:vbtVJLvD
>>84
これでいいわな。核心部分は%Hと10の比較だけ。
これでいいわな。核心部分は%Hと10の比較だけ。
2020/12/01(火) 22:04:55.51ID:JidlBL+f
>>82
> シェルスクリプトで数字の計算は普通にできるやろ?
外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
> ライブラリを誰かが用意してくれなきゃプログラミングができないとか
日付の処理とかいろいろ落とし穴が多いから。
今はプログラムも複雑になったし... 料理に例えると、大昔は火を起こすところから
できないと駄目だったろうが今はそんなこと要求されないw
> シェルスクリプトで数字の計算は普通にできるやろ?
外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
> ライブラリを誰かが用意してくれなきゃプログラミングができないとか
日付の処理とかいろいろ落とし穴が多いから。
今はプログラムも複雑になったし... 料理に例えると、大昔は火を起こすところから
できないと駄目だったろうが今はそんなこと要求されないw
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 日本の場合、いつも凶悪な行動に移すのは極左なんだよね。右翼はほとんどなにもしない [201193242]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【朗報】外務省局長、中国側の要求を断固拒否。「高市さんの答弁は日本政府の立場を変えるものではないし、撤回しない」 [519511584]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【実況】博衣こよりのえちえち歌枠🧪
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
