20/11/24 21:37:20.06 mbTiTj6s.net
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
スレリンク(tech板)
2:デフォルトの名無しさん
20/11/24 21:37:36.71 mbTiTj6s.net
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
参考 URLリンク(unix.stackexchange.com)
特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
Debian系 … dash CentOS系 … bash Alpine … ash(busybox) Android … mksh
FreeBSD … ash Solaris,OpenBSD … ksh
macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
仕様 URLリンク(pubs.opengroup.org)
参考 URLリンク(en.wikipedia.org)
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
#!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
Heirloom Bourne Shell: sh URLリンク(heirloom.sourceforge.net)
Schily Bourne Shell: obosh URLリンク(schilytools.sourceforge.net)
歴史的資料 URLリンク(www.in-ulm.de)
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
参考 URLリンク(www.speech-lab.org)
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな
3:デフォルトの名無しさん
20/11/24 21:37:51.87 mbTiTj6s.net
関連スレ
【Bash】Windows Subsystem for Linux【WSL】8
スレリンク(linux板)
Bashでプログラミング [転載禁止](c)2ch.net
スレリンク(linux板)
シェルスクリプト総合 その28
スレリンク(unix板)
zsh その7
スレリンク(unix板)
【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
スレリンク(unix板)
4:デフォルトの名無しさん
20/11/24 21:40:10.48 mbTiTj6s.net
しかし>>3の関連スレが,1スレ消費した後にまだリンク張り替えなくて良いあたり,
全然書き込まれていないんだな。
人気がないのかあるいは,安定していて一斉に文句が書き込まれるような問題も無いのか……。
5:デフォルトの名無しさん
20/11/24 23:21:17.54 EBaS3Lgi.net
fishはどうなの?
6:デフォルトの名無しさん
20/11/25 00:17:50.27 jf5n46hh.net
fishとかxosh?だとかPOSIXじゃないから
うんいいね。でおしまい
あんなのでスクリプト書くやつはいない
7:デフォルトの名無しさん
20/11/25 02:48:27.65 zD7zhP2P.net
クソッシュってのもあるんだ?
8:デフォルトの名無しさん
20/11/25 06:48:03.19 BAAT1DM9.net
別にfishが使い続けられてそれが便利ならそのスクリプトがどういう文法だろうがどうでもよくないか?
9:デフォルトの名無しさん
20/11/25 10:55:21.76 4qZN2cIE.net
POSIXかどうかはとくにどうでもよい。
10:デフォルトの名無しさん
20/11/25 11:27:15.22 zD7zhP2P.net
クソッシュについておしえて
11:デフォルトの名無しさん
20/11/25 17:20:14.98 7xSU5LuF.net
>>8
シェルはインタラクティブだけじゃなくてシェルスクリプトとしても使われてる
例えば/bin以下でこんなのがシェルスクリプトで実装されてる
/bin/bzdiff: POSIX shell script, ASCII text executable
/bin/bzexe: POSIX shell script, ASCII text executable
/bin/bzgrep: POSIX shell script, ASCII text executable
/bin/bzmore: POSIX shell script, ASCII text executable
/bin/egrep: POSIX shell script, ASCII text executable
/bin/fgrep: POSIX shell script, ASCII text executable
/bin/gunzip: POSIX shell script, ASCII text executable
/bin/gzexe: POSIX shell script, ASCII text executable
/bin/which: POSIX shell script, ASCII text executable
/bin/zcat: POSIX shell script, ASCII text executable
/bin/zdiff: POSIX shell script, ASCII text executable
/bin/zgrep: POSIX shell script, ASCII text executable
/bin/zless: POSIX shell script, ASCII text executable
/bin/zmore: POSIX shell script, ASCII text executable
なのでPOSIXシェルがシステムから取り除かれることはない
そしてfishはシステムにとって使えず必須ではないのでインストールされない
という状況がこれからも続く
悪くはないが代替として使えない
12:デフォルトの名無しさん
20/11/25 19:19:27.01 4qZN2cIE.net
>>11
そんな話は聞いてない。
13:デフォルトの名無しさん
20/11/25 20:38:12.08 uhQhH5gv.net
だから、別にfishでスクリプトを書いてもいいけど
統一された企画も何もないんだから、
少なくともこのスレで話す話題じゃねーよなって言う話
それこそ、Pythonも、
逐次的に入力を解釈して利用者に入力を促進する状態がある
と言う点ではシェルの一緒だけど、
じゃあここで話すの話題かっていう。
14:デフォルトの名無しさん
20/11/25 20:39:13.80 uhQhH5gv.net
すまん音声入力が誤爆した
企画→規格
15:デフォルトの名無しさん
20/11/25 21:29:52.71 0vRedS2N.net
こんなキモイことホソボソ独りでつぶやいてんのかw
16:デフォルトの名無しさん
20/11/25 21:41:57.79 uhQhH5gv.net
最新のfishは使うけど音声入力は使いません!
wwww
17:デフォルトの名無しさん
20/11/25 22:04:20.77 Hppr2Ato.net
fishのスクリプトがどういう文法だろうが
使わないのでどうでもいいという話
>>5
> fishはどうなの?
どうでもいい。興味ない。
18:デフォルトの名無しさん
20/11/25 22:50:57.68 m5om5rgh.net
シカトすればすぐに終わるだろうに、なぜか自ら話を伸ばすw
19:デフォルトの名無しさん
20/11/25 23:07:49.06 zD7zhP2P.net
いつから統一された規格とやらが要件になったの?
いいけどそれなら総合の看板下ろしてPOSIX専用掲げてよ紛らわしい
20:デフォルトの名無しさん
20/11/26 00:09:07.40 JCzWlVbS.net
shに似ても似つかないスクリプトはスレ違いなのはたしか。
POSIXはある程度どうでもよいとして。
ただスレ違いを前提として、別のシェルをすこしくらい話題にするのはいいのでは。
そんなに活発なスレでもないし。
21:デフォルトの名無しさん
20/11/26 00:38:08.15 WQpiaax/.net
いつも思うがポジキチは病気
22:デフォルトの名無しさん
20/11/26 01:12:59.63 T00uXQW1.net
昔話だが、まだいろんなUNIXワークステーションが使われていた頃、あるOS用に
書いたスクリプトが別のOSで微妙に動かなかったりして、面倒だった。
そうするとやっぱPOSIXかあと思ったりした。
今なんかどこでもたいていbashが入ってるしな。てゆうかたいがいLinuxだし。
そしてCPUがたいがいインテルに... まARMのクロスコンパイルはするけど。
23:デフォルトの名無しさん
20/11/26 01:14:37.64 T00uXQW1.net
あれ、ディレクトリ構造というのもPOSIXで規定されてるんだっけ?
違うOSで動かすときはそういうのも問題になったな。
そうやってGNUのconfigureなんかも複雑化していったという。
24:デフォルトの名無しさん
20/11/26 02:04:23.72 JCzWlVbS.net
>>23
FHSならPOSIXではないな。
URLリンク(ja.wikipedia.org)
25:デフォルトの名無しさん
20/11/26 08:58:40.11 Czgib+VC.net
手元に有用なfishスクリプトがあってそれを使いたいならfishをインストールすればいいだけじゃね?
なぜデフォルトインストールされたシェルだけの縛りゲーしてるの
26:デフォルトの名無しさん
20/11/26 11:11:31.59 ZeK0fFqz.net
fishをインストールする権限がないから
27:デフォルトの名無しさん
20/11/26 12:05:54.70 JCzWlVbS.net
パーミッションだけの話なら、$HOMEのどこかにいれとけ。
/usr/bin以下でないとダメなわけでもないやろ。
28:デフォルトの名無しさん
20/11/26 13:13:04.55 BChkjCh/.net
>>27
だからインストールできない
linux-vdso.so.1 (0x00007fffeddc6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211d340000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f211d110000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f211cef0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211cce0000)
libpcre2-32.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-32.so.0 (0x00007f211ca60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f211c6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211c2c0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f211da00000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211bf20000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f211bd00000)
29:デフォルトの名無しさん
20/11/26 14:24:24.05 dGdApgXM.net
>>19
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが健全かもな
しばらくスレ見てればわかるけど要は俺がマウント取れない話題はするなってことなんだよね
全くもってくだらない
30:デフォルトの名無しさん
20/11/26 14:30:52.27 SyhWTBHJ.net
感想は同意。マウント取るためのネタとしてするなとも言っているのもありそうだな
31:デフォルトの名無しさん
20/11/26 15:57:47.46 JCzWlVbS.net
テンプレに、明示してたらほかのシェルでも可、とあるんだからここでええやろ。
POSIXバカは無視で。
32:デフォルトの名無しさん
20/11/27 15:29:21.75 3pf/tsln.net
awkやsedの話でもなんかすぐ「そんな複雑なことやるな!」って否定しだすしな。
awk,sedは独立したプログラム言語とはいえシェルスクリプトの一部と言えるんだから,
fishと同じでここで扱っても良い話題。
33:デフォルトの名無しさん
20/11/27 15:55:39.83 w5Az7J0d.net
そんな事するなとは言ってないな
シェルスクリプトではないというだけの話だ
独立したプログラム言語でシェルスクリプトではない
34:デフォルトの名無しさん
20/11/27 16:00:25.98 pgQorB3q.net
息を吐くように嘘をつく
35:デフォルトの名無しさん
20/11/27 18:09:13.28 yWTZwmZ1.net
>>28
ライブラリもホームに置けば。一工夫いると思うけど。
36:デフォルトの名無しさん
20/11/27 18:51:24.04 OZT1ua32.net
>>33
たしかにそうではあるが、ふつうのsedくらいまではこのスレの射程やろ。
「総合」だし。
だが、awkは外れてると思う。w
37:デフォルトの名無しさん
20/11/27 19:51:16.84 3pf/tsln.net
POSIX信者ウゼー
FishでもAWKでもシェルスクリプト一と言えるだろうが。
そりゃ突き詰めて見れば,「PowerShellを扱わないんであればFishシェルも扱わない」
「Pythonを扱わないんであればAWKも扱わない」という理屈は分からなくもないけど,
どうしてそう強情に0か1かでしか物事を捉えられんのかね……。
38:デフォルトの名無しさん
20/11/27 21:43:43.30 w5Az7J0d.net
awkがシェルスクリプトじゃないというのはPOSIXとは関係ない
awkを呼び出すコードは当然シェルスクリプトだが
awkはシェルではないので、awkの文法に関することは
シェルスクリプトではないというだけのことだ。
そしてfishはシェルなのだから、当然シェルスクリプトだ
ただしPOSIXではないシェルスクリプトであるが
39:デフォルトの名無しさん
20/11/27 21:51:03.71 w5Az7J0d.net
例えばシェルスクリプトで$_ってどういう意味ですか?
って聞かれても困るだろ?このコードで
cat test.txt | ruby -e 'while gets; print $_; end'
40:デフォルトの名無しさん
20/11/27 22:24:30.25 tPIe9OcJ.net
>>39
それはRubyの記号だよ、で済む話
41:デフォルトの名無しさん
20/11/27 22:33:58.69 OZT1ua32.net
>>39
「cat」ってなぜ猫なんですか?
とか聞かれても困るけどな。w
42:デフォルトの名無しさん
20/11/27 22:39:54.65 w5Az7J0d.net
そういうことだな。それはawkの文法だよ。
だからawkスレで聞いてねで終わる
43:デフォルトの名無しさん
20/11/27 22:40:48.72 3pf/tsln.net
>>38
じゃあPowerShellやcmdの話題も扱っていい筈よね。
ここUnix板じゃねーし,
仮にUnixシェル専用だという暗黙の了解があるにしても
PowerShellはLinuxの上で動くし。
……とまあ,際限なくチャチャを入れることができる
ガバガバ理論なんで,別にAWK程度なら
このスレで扱っても構わないでしょう。
柔軟に生きよう。
44:デフォルトの名無しさん
20/11/27 22:51:49.53 w5Az7J0d.net
>>43
専用スレがあるのだからそっちに行ったほうがいい
45:デフォルトの名無しさん
20/11/27 22:58:10.21 YUFOKuwU.net
ご覧の通り何を言っても無駄
無駄に突っかかってくるやつ相手にしてもSAN値下がるだけなので
「POSIXにこだわらないシェルスクリプト総合スレ」を立てたほうが建設的だよ
POSIXに強くこだわりたいときにこのスレ使えばいい
46:デフォルトの名無しさん
20/11/27 23:00:51.97 W+zDVYCR.net
>>43
ぺこぱかよ
47:デフォルトの名無しさん
20/11/27 23:06:24.74 0Fqhj3Tv.net
立てたよ
fish POSIX以外のシェルスクリプト総合 xonsh
スレリンク(tech板)
48:デフォルトの名無しさん
20/11/27 23:08:59.63 W+zDVYCR.net
このスレの「総合」の看板を下ろさないと。
49:デフォルトの名無しさん
20/11/27 23:10:11.01 0Fqhj3Tv.net
POSIXシェルスクリプト総合にすればOK
50:デフォルトの名無しさん
20/11/27 23:21:59.20 W+zDVYCR.net
POSIXシェルスクリプト専用だろ?
何が総合だ。看板に偽りあり!
51:デフォルトの名無しさん
20/11/27 23:27:25.30 OZT1ua32.net
>>43
Awkを入れたらPerlも入るぞ?
Perlが入ったらPythonも入るぞ?
Pythonが入ったらRubyも入るぞ?
と際限がなくなりそうだけどなあ。
52:デフォルトの名無しさん
20/11/27 23:30:37.47 OZT1ua32.net
>>50
POSIXそのものなのか?準拠は?拡張は?と、それはそれでややこしい。w
こまけえことは気にすんな!でええがな。
POSIXバカは無視で。
53:デフォルトの名無しさん
20/11/28 01:07:03.95 UNKiK/L1.net
>>47
これ人が集まらないようわざと分かりにくいタイトルにしてるだろ
どんだけ陰険なん
54:デフォルトの名無しさん
20/11/28 01:17:29.82 u/XOSRZ8.net
>>51
すぐそうやって極論に持って行く。
「AWK程度なら」の意味分かってんの?
55:デフォルトの名無しさん
20/11/28 01:17:44.10 u/XOSRZ8.net
>>53
さすがに被害妄想
56:デフォルトの名無しさん
20/11/28 01:36:29.48 Qftrz3Vi.net
>>54
極論じゃないやろ。
むしろおまえこそ自分の言葉の意味がわかってんのかと。
57:デフォルトの名無しさん
20/11/28 02:08:28.38 iJr35ATc.net
awkの話もシェルスクリプトといことでいいですよね?
awkで作られた3Dシューティングゲーム「awkaster」が凄い
URLリンク(www.softantenna.com)
このコードを説明してください
58:デフォルトの名無しさん
20/11/28 02:12:15.88 iJr35ATc.net
別にawk程度ならこのスレで扱っても構わないでしょう?w
59:デフォルトの名無しさん
20/11/28 02:51:11.97 9ywhOEJN.net
>>57
>このコードを説明してください
いくら払うの?
まずはそこからだ
60:デフォルトの名無しさん
20/11/28 02:56:35.29 iJr35ATc.net
はらうわけないやろw
61:デフォルトの名無しさん
20/11/28 04:11:09.88 qjJxpluv.net
>>60
キチガイすぎだ、お前は
62:デフォルトの名無しさん
20/11/28 10:42:20.87 PixgrLNy.net
>>53
確かにこれはひどい悪意を感じるので
立て直したほうがよい
63:デフォルトの名無しさん
20/11/28 12:09:11.41 FGpMIdZG.net
>>39
PowerShell でもそうだけど、$_ は、前段のパイプから渡ってくるもの。
1行ずつ渡ってくるのを、そのまま表示している
1-liner では、よく使う
64:デフォルトの名無しさん
20/11/28 12:24:11.90 u/XOSRZ8.net
>>62
自演乙
65:デフォルトの名無しさん
20/11/28 12:27:00.82 u/XOSRZ8.net
だいたい,「分かりやすいタイトル」にしたところで人が集まるような話題じゃねーしなw
Fishだけ知っててBash知らない,みたいな人間なんて超希少だろうし,
大半の人間はFishの前にBashを知っていて,
シェルスクリプトとして書く場合はBashを使う。
だから「Fishでこんな処理を書きたいんだけど」という疑問の前に
Bashを使うんだわ,残念ながら。
まあBashを使うことが〝良いこと〟か,というのはまた別の話な。
勘違いしてつっかかってくる奴がいそうなんで,念の為言っておくが。
66:デフォルトの名無しさん
20/11/28 15:43:45.81 RWbEaHwZ.net
PowerShellやコマンドプロンプトはシェルスクリプトがなかった
Windowsの世界で使わざるを得ないものだから、それでスクリプト書くことはあるけど
fishとか書かないよね
書けるやつはbashかPOSIX準拠で書くし
書けないやつはPythonとかの言語を使う
bash書くのだるいからfishでとかやるやつがいない
fishとかプロンプトからの入力に使うだけでしょ
使ってる人もデフォルトの補完便利だねぐらいにしか思ってない
67:デフォルトの名無しさん
20/11/28 15:52:04.59 /h72lCnp.net
fishのスクリプトの具体的なことは未だに全く書かれていない、どう書いたらいいとかさえも
最初に言い出したやつさえ使ってないだろうw いつまで引っ張ってるんだか
68:デフォルトの名無しさん
20/11/28 17:30:07.45 P/o6eg3s.net
マイナーな話題は許さんのだったら総合の看板下ろせ
69:デフォルトの名無しさん
20/11/28 17:49:02.21 FGpMIdZG.net
AWS のCodeDeploy には、sudo yum install ruby
と書いてあるから、Ruby製
CloudFormation では、Ruby製のChef, Cookpad製のItamae, Kumogata2 を使える
バックエンドの環境構築運用では、
複雑なものは、シェルスクリプトよりも、Rubyで書く
70:デフォルトの名無しさん
20/11/28 18:12:07.68 u/XOSRZ8.net
>>68
もうこれに尽きるな。
Fishシェルのことを扱う別のスレを建てるんじゃなくて,
POSIXシェルのシェルとしての機能(for文, set命令とか)のみを
扱う専門スレを建てればいい。
「総合」とある以上,ここでは前者を含んだ話題を扱うべきだ。
71:デフォルトの名無しさん
20/12/01 08:36:50.52 2728+f2c.net
dateコマンドで「今日の10時」などではなく「次に来る10時」を求める方法をご存知の方教えてください!
72:デフォルトの名無しさん
20/12/01 10:32:35.01 XcHTxxjN.net
date?おいやめろ。またPOSIXの話になるじゃねーか!
73:デフォルトの名無しさん
20/12/01 12:42:30.34 WP+WGTcn.net
文字列での表示は出来るけど、
プログラミング的な時間オブジェクトの比較とかは、出来ないかも
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
74:73
20/12/01 12:48:04.25 WP+WGTcn.net
現在・今日・明日の文字列で、文字列として比較できるかも知れない
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
75:73
20/12/01 12:52:06.65 WP+WGTcn.net
>>74
今日が現在よりも前なら、明日
それ以外は、今日
76:73
20/12/01 14:53:07.28 WP+WGTcn.net
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
77:デフォルトの名無しさん
20/12/01 17:23:30.11 sVIjNcb4.net
>>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が月末だったら問題あるから気をつけな
78:デフォルトの名無しさん
20/12/01 17:39:46.39 gqqffooe.net
>>77
10時を過ぎても11時までなら今日の10時が返されるんじゃ?
79:デフォルトの名無しさん
20/12/01 17:50:56.66 sVIjNcb4.net
うん、あとよろw
80:デフォルトの名無しさん
20/12/01 17:52:38.86 sVIjNcb4.net
思ったんだがシェルスクリプトって日付の計算ができないんだな
そういうライブラリってないのか?
81:デフォルトの名無しさん
20/12/01 18:03:57.84 /3zv7uXC.net
数字の計算はシェルスクリプト向けではないなあ
82:デフォルトの名無しさん
20/12/01 18:09:45.30 XaSziyAo.net
シェルスクリプトで数字の計算は普通にできるやろ?
rubyとかpythonとか便利ライブラリ盛りだくさんな温室で
育ってきたやつは知らんだろうけど
C言語だって日付の計算はできないんだぞ
ライブラリを作るか使うかしてやっと実現できること
ライブラリを誰かが用意してくれなきゃプログラミングができないとか
技術力もほんと落ちたもんだわw
83:デフォルトの名無しさん
20/12/01 18:28:45.10 xl/Y0HIa.net
>>71
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-23;echo $(TZ=$tz date +%D) 10:00
84:デフォルトの名無しさん
20/12/01 18:31:08.89 xl/Y0HIa.net
>>83
tz=JST-9; [ $(date +%H) -ge 10 ] && tz=JST-33;echo $(TZ=$tz date +%D) 10:00
だな。ぼーっとしてた
85:デフォルトの名無しさん
20/12/01 20:27:54.30 vbtVJLvD.net
>>84
これでいいわな。核心部分は%Hと10の比較だけ。
86:デフォルトの名無しさん
20/12/01 22:04:55.51 JidlBL+f.net
>>82
> シェルスクリプトで数字の計算は普通にできるやろ?
外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
> ライブラリを誰かが用意してくれなきゃプログラミングができないとか
日付の処理とかいろいろ落とし穴が多いから。
今はプログラムも複雑になったし... 料理に例えると、大昔は火を起こすところから
できないと駄目だったろうが今はそんなこと要求されないw
87:デフォルトの名無しさん
20/12/01 22:56:51.43 C5mmwJjK.net
GNUやBSDのdateの拡張部分、つうてもある値(文字列な日付も含む)を日付に変換っていう部分を使えば普通に日付の計算は(簡単に)できるだろう
日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。落とし穴を避けるためにも(他の言語でも)
年月日で計算する必要のあるのは、落とし穴なんて関係ない単純な場合なだけだろう。何年何ヶ月 とか ある程度適当でいい場合とか
88:デフォルトの名無しさん
20/12/01 23:04:11.24 uBfLZ+08.net
しかし、そういうときはさすがにPerlだな。w
89:デフォルトの名無しさん
20/12/01 23:34:27.84 sWsOqT7L.net
>>86
> 外部コマンド呼ばないとできないよね。あ$(())とかのこと? でも伝統的には...
伝統?いつまでも古代のBourne shellなんか使ってるなよ
今は令和の時代だぞ?1988年(ksh88)はもう30年以上前だ。
そんな昔のシェルをお前は今も使ってるのか?
いい加減POSIX準拠シェルに乗り換えろ
90:デフォルトの名無しさん
20/12/01 23:35:29.20 8hFs+PyJ.net
>>71です
みなさんありがとうございます助かりました!
91:デフォルトの名無しさん
20/12/01 23:40:19.72 sWsOqT7L.net
>>87
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
date +%s はPOSIX準拠ではない
92:デフォルトの名無しさん
20/12/01 23:54:59.72 vbtVJLvD.net
別にPOSIXに従ってなくても,元の質問が解決すればそれでいいと思うんだが。
ちなみにPOSIXに準拠した場合でもUNIX時刻は算出できる。
93:デフォルトの名無しさん
20/12/01 23:55:29.58 vbtVJLvD.net
しかもThe Open Groupが直々にコードを書いてくれてるっていうw
94:デフォルトの名無しさん
20/12/02 00:02:02.37 FOy3G1VC.net
また頓珍漢にPOSIX準拠と言い出してるのかw
95:デフォルトの名無しさん
20/12/02 00:18:08.63 2qveoeUZ.net
POSIXバカはスルーで!
興味がある人のみ反応すれば。
96:デフォルトの名無しさん
20/12/02 01:03:04.87 eXK3SZJl.net
>>93
ないぞ?
URLリンク(pubs.opengroup.org)
97:デフォルトの名無しさん
20/12/02 01:11:52.81 s/Tj40p5.net
名前に反して自らの排外的な殻に閉じ籠ってる団体
98:デフォルトの名無しさん
20/12/02 01:31:58.00 fE08etha.net
POSIXバカと呼び名通りにすぐにバカっぷりを体現してくれる呼び名に偽りはないなw
99:デフォルトの名無しさん
20/12/02 04:20:55.77 eXK3SZJl.net
などと文句をいうだけ
100:73
20/12/02 13:32:26.78 vDg6xkSY.net
>>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
101:デフォルトの名無しさん
20/12/02 18:18:18.22 jOtugkoA.net
now=$(date +%Y%m%d %H%M%S)
date=${now# *
20201202 181521
4294967296
102:デフォルトの名無しさん
20/12/02 18:18:53.41 jOtugkoA.net
すまんw 途中で書き込んでしまったw
103:デフォルトの名無しさん
20/12/02 18:28:48.81 jOtugkoA.net
やっぱ面倒になった >>84でいいやw
104:デフォルトの名無しさん
20/12/02 20:24:18.38 aGDRVZCV.net
>>96
なんでそこしか見てないの?
UNIX時刻の定義に書いてある。
は~,これだからクレクレは困るんだよなぁ……
ちっとは他のページも調べればどうだ。
105:デフォルトの名無しさん
20/12/02 21:09:12.29 2qveoeUZ.net
じゃあそれをはれよ
106:デフォルトの名無しさん
20/12/03 00:15:40.19 qzOIs4Mf.net
>>105
POSIXバカはスルーするんじゃなかったんか?
それともスルーできないくらい有用な書き込みだったかw
107:デフォルトの名無しさん
20/12/03 00:54:27.06 7EFKRkup.net
>>106
POSIXバカである行為と人物は異なる。
108:デフォルトの名無しさん
20/12/03 01:29:53.30 JqlpTbiL.net
それでUNIX時刻の定義とはどこ?
109:デフォルトの名無しさん
20/12/03 01:41:47.93 JqlpTbiL.net
epoch time、unix timeどちらでも調べたがやっぱりないな
110:デフォルトの名無しさん
20/12/03 08:47:14.88 qzOIs4Mf.net
>>109
ほんとに調べた???
URLリンク(pubs.opengroup.org)
111:デフォルトの名無しさん
20/12/03 10:16:47.14 cLjLRJP8.net
優しいなw
112:デフォルトの名無しさん
20/12/03 11:24:39.60 8fqR7feq.net
>>110
POSIXに手抜きするなって言っておけ
2020/12/03が2020/01/01から何日目であるかの計算式も書けとw
113:73
20/12/03 12:16:58.37 Nwj1NL2r.net
>>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
114:デフォルトの名無しさん
20/12/03 12:51:14.44 8fqR7feq.net
>>113
dateの呼び出しなら理屈上1回でやれるだろ?
現在の日時から、今日の10時、明日の10時を計算するだけやで?
115:デフォルトの名無しさん
20/12/03 12:57:17.10 kewMsHSW.net
POSIXといえば、>>113はデフォのdateがGNUのdateな環境用だね。
いろいろ機能拡張されているみたいで。
116:デフォルトの名無しさん
20/12/03 13:02:33.47 kewMsHSW.net
あいろいろと言ってもこの場合は--dateオプションだけど
117:デフォルトの名無しさん
20/12/03 14:57:00.63 U4KcZC74.net
>>112
dateコマンドで取得できるだろ。もちろんC関数でもな
118:デフォルトの名無しさん
20/12/03 15:05:53.69 8fqR7feq.net
>>117
現在日時の場合はね
俺が言ってるのは任意の日付を扱えないという話
119:デフォルトの名無しさん
20/12/03 15:07:46.18 U4KcZC74.net
>>114
現在の取得と明日を求めるのをお任せで2回は必要じゃね
明日を計算するのをうだうだ書くなら別だが
120:デフォルトの名無しさん
20/12/03 15:11:33.39 U4KcZC74.net
>>118
なるほど
あれは見てわかるようにCでのことだからな、Open Groupに言っても鼻で笑われるだけかとw
121:デフォルトの名無しさん
20/12/03 15:15:27.80 3lw1+h2j.net
>>119
現在の日時から今日の10時は計算できるし
明日の10時も計算できる
今日の10時に86400秒足せば、明日の10時だ
122:デフォルトの名無しさん
20/12/03 15:19:57.28 U4KcZC74.net
>>121
w
86400秒足したのを何月何日にするのにどうするつもりなの?
簡単に言えば、月末の次の日って話だぞ
123:デフォルトの名無しさん
20/12/03 15:28:04.68 3lw1+h2j.net
> 86400秒足したのを何月何日にするのにどうするつもりなの?
え?POSIXにその計算式があるんじゃなかったの?w
124:デフォルトの名無しさん
20/12/03 15:29:22.13 U4KcZC74.net
>>123
それ、マジで言ってるの?マジなら何もわかってないってことになるぞw
125:デフォルトの名無しさん
20/12/03 15:54:45.26 3lw1+h2j.net
>>124
中身がないレスはしなくていい
126:デフォルトの名無しさん
20/12/03 15:58:19.12 U4KcZC74.net
>>125
>>123のレスに中身があるとでも?w
そういうレスするのはいつものやつかwなるほど通りでバカなこと言うわけだ
127:デフォルトの名無しさん
20/12/03 16:01:23.95 3lw1+h2j.net
中身がないレスをお前が先にしたわけで、
それに対するレスにも中身が無いのは当然じゃん
早くPOSIXにその計算式はないって言いなよw
128:デフォルトの名無しさん
20/12/03 16:02:58.72 3lw1+h2j.net
あとはっきり言っておくな
POSIXにあるのは年月日時分秒からの変換ではなく
年日時分秒からの変換。月がない。
129:デフォルトの名無しさん
20/12/03 16:06:05.70 U4KcZC74.net
>>127
イミフ
>>119の通りだと今でも思うよ
それに対してなんか不思議なこと言ってるから、>>122とちゃんとした疑問なんだけどなあ
それが>>123なのか...マジで...
ないも何もそんな計算があるなんて誰が言ったんだか?どれのこと?w
130:デフォルトの名無しさん
20/12/03 16:07:32.44 U4KcZC74.net
>>128
むちゃくちゃww
はっきり言っておくとかwwマジキチかよと思わせるぞ
131:デフォルトの名無しさん
20/12/03 16:08:37.33 3lw1+h2j.net
もう話の流れを忘れたのか?
↓無理やろ
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通。
132:デフォルトの名無しさん
20/12/03 16:17:23.67 U4KcZC74.net
>>131
お前は根本的に何もわかってないんだな
だからそんな勝手な話の流れと思ってるのか。そこに書かれてることも全くわかってないんだな
そこに計算なんて書いてないだろうに。お前が全く話の流れをわかってないのが明らかだ
>>119なんて言ってたくせにw またごまかしなんだろうが、無理すぎw
133:デフォルトの名無しさん
20/12/03 16:19:47.96 U4KcZC74.net
>>132
>計算なんて書いてない
なんか全く不可解なことを言い出してる>>123の計算ね
134:デフォルトの名無しさん
20/12/03 16:22:27.43 3lw1+h2j.net
> 日付の計算はシリアルな値=ある起点(OSやフレームワークによる)からの秒数 をベースでやるのが普通
が真なら
86400秒足せばOKだろw
135:デフォルトの名無しさん
20/12/03 16:25:05.27 U4KcZC74.net
>>134
何を言っているのか...キチガイなのかとこわ
お前にはなんか知らんがOKなんだろうが、お前が注文つけた先では全くOKじゃないだろう、年月日を出したいらしいからな
残念だったな
136:デフォルトの名無しさん
20/12/03 16:26:23.68 3lw1+h2j.net
だからPOSIXじゃ明日の10時の年月日が出せないと言ってるんだが
137:デフォルトの名無しさん
20/12/03 16:30:21.85 U4KcZC74.net
>>136
>>119って始めたくせによく言うよw
何とか誤魔化そうとしてるみたいだけど、お前は本当にゲスいなw
138:デフォルトの名無しさん
20/12/03 16:31:40.83 U4KcZC74.net
>>132,137
>>119は俺じゃねえかw
>>114の間違い
139:デフォルトの名無しさん
20/12/03 16:33:17.90 3lw1+h2j.net
だからできるだろ
日付の計算はシリアルな値でやるんだからw
140:デフォルトの名無しさん
20/12/03 16:38:34.33 U4KcZC74.net
もう全くわかってませんという自己紹介はいらんぞw
ちなみに、今日(今)の明日(というかどこまでかはわからんが、何時間/何日前後) の年月日はPOSIXでもトリッキーにできそうなのは上にあるだろに
141:デフォルトの名無しさん
20/12/03 17:37:06.10 Glofd6fS.net
>>113
変数に代入するのはformat指定だけにして
$(date “$format”)とか$(date +”$format”)にしたほうが
何をやってるかわかりやすくていい気がする
あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある
それを把握した上で使う分には問題ないだろうけど
142:デフォルトの名無しさん
20/12/03 19:26:57.20 3lw1+h2j.net
>>141
> あと>>84とかと同じで0時またぎの微妙なタイミングで明後日になる可能性がある
なるほど。日付の取得は1回にしてあとは計算したほうが良さそうだな。
143:デフォルトの名無しさん
20/12/04 00:45:50.04 ECFKf8K5.net
>>121
いや,date(1)の呼び出しは一回で済むでしょう。
POSIXに拘ろうが拘らまいが,「ある瞬間の24時間後」
を知りたければUNIX時刻と普通の時刻を変換すればいい。
ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
って思ってる人も居そうだが,普通にできる。
144:デフォルトの名無しさん
20/12/04 01:18:58.36 iavYwWUx.net
Dateとして一回Calendarとして一回、二回は必要だろう
元のはCalendarとして二回使ってる感じかな
何言っているかわからんだろうけど
145:デフォルトの名無しさん
20/12/04 01:24:55.12 HyuHUD7c.net
>>143
> を知りたければUNIX時刻と普通の時刻を変換すればいい。
どうやって?
146:デフォルトの名無しさん
20/12/04 01:25:29.92 HyuHUD7c.net
>>143
> ちなみに「UNIX時刻はPOSIXのdateコマンドでは出せない/変換できない!」
できるのは、dateコマンドからUNIX時間への変換だけですよね?
147:デフォルトの名無しさん
20/12/04 01:48:29.11 HyuHUD7c.net
>>144
POSIXにはCalender(笑)の機能なんてないですもんねw
自分が使える言語に固執してないで、dateコマンド用語で話をするように
148:デフォルトの名無しさん
20/12/04 01:59:44.65 8vYOAEQt.net
論より証拠というやつで、実際にスクリプトを書いてみたらいいんだ
で書けたらそれを貼る、書けなかったらごめんなさいする
149:デフォルトの名無しさん
20/12/04 02:08:43.91 iavYwWUx.net
>>147
POSIXもそうだが、概念としてのDate(Time)とCalendarは当然のようにあるってことだよ
dateコマンドは機能は限定されているがその2つの概念を内包してる。他の言語ではクラスとして明確にわかりやすいように(?)存在するってだけだな
POSIXは「システムクロックを」に固執/それ対象なのが痛くてあまり使えなさそうなだけで
150:デフォルトの名無しさん
20/12/04 02:33:22.25 3npkCfBA.net
普通の暮らしで使ってる日付なのに
普通の暮らしで接してるからこんな話題でもあまりよく考えてないから計算でできると思い込んで言っちゃうんだろうな。今までそういうのも書いたこともなく
そんなのが機会があって自分で書いたら落とし穴に落ちたのを書きそう
さすがに今時はそう見事に簡単に落とし穴に落ちたのを書かないとは思うが、書きそうでもある
151:デフォルトの名無しさん
20/12/04 08:13:05.53 HyuHUD7c.net
>>149
概念としてのカレンダーって何?
お前カレンダー持ってないの?
あれがカレンダー
152:デフォルトの名無しさん
20/12/04 08:32:14.34 8vYOAEQt.net
ふつうJavaのプログラミングの経験ぐらいないか? ないのかw
なんか話がこじれてるが、dateコマンドの呼び出しを1回で済ませると言った人、
そーす(スクリプト)ぷりーず。
153:デフォルトの名無しさん
20/12/04 09:43:14.21 HyuHUD7c.net
>>152
すでに指摘済み
> 自分が使える言語に固執してないで、dateコマンド用語で話をするように
この文章は、Java”だけ"の常識を、このスレで語るなと言ってる
154:デフォルトの名無しさん
20/12/04 10:31:19.91 ySoYx7WA.net
Java”だけ"だと思ってるんだからなあ。知識が無さすぎなのが顕著だな
こいついつものやつか?
自分の知らないこと話すなマウント取れないからってことだろうとしか思えないw
155:73
20/12/04 10:53:02.32 sfksvFP9.net
>>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 と解答を得たとしても、
処理が終わった時には、その時刻を過ぎているかも知れない
それと、夏時間・うるう秒などにも、注意
156:デフォルトの名無しさん
20/12/04 11:07:30.74 ECFKf8K5.net
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時刻が求まる。
これに「明日まで」の秒数を足して
URLリンク(github.com)
↑これで元の時刻表記に変換し直せばいい。
157:デフォルトの名無しさん
20/12/04 12:46:44.71 yENL1Rc+.net
それって 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
158:デフォルトの名無しさん
20/12/04 12:55:10.42 HyuHUD7c.net
>>154
Javaだけでも、Javaと○○だけ でもどっちでもいいよw
どちらにしろ特定の言語専用の用語で
dateコマンドと関係ないんだから
常識だろ
>>156
dateを2回呼ばないです。代わりにawkを呼ぶので遅いです。じゃ
あまり意味ないな。コードもクソ長いし。
159:デフォルトの名無しさん
20/12/04 12:55:33.77 HyuHUD7c.net
>>157
> それって date +%s じゃ駄目なんだっけ。
+%sはPOSIX準拠じゃない
160:デフォルトの名無しさん
20/12/04 12:55:34.58 yENL1Rc+.net
>>84
このTZずらし戦法って1時間以下のずらしでも使えるのかな?
とりあえずインドとの時差は3時間30分だから30分単位とかはできる?
161:デフォルトの名無しさん
20/12/04 13:04:25.05 HyuHUD7c.net
ネパールって時差15分単位のずれなのかw
URLリンク(nepal-lovers.com)
162:デフォルトの名無しさん
20/12/04 13:22:53.16 2+VKdPy1.net
なぜかチョンは日本と同じにしてる
日本のほうが早いなんて許せないらしい
誇り高い民族だよね。あっぱれ!
163:デフォルトの名無しさん
20/12/04 13:35:49.85 HyuHUD7c.net
朝鮮は、日本の最西端と最東端の間にあるだろ
164:デフォルトの名無しさん
20/12/04 18:33:51.60 9vuroJRJ.net
>>158
概念としての話だってのに、概念がわかりませんだからなあ
POSIXのそこらのC関数も当てはまる話だってのに、概念がわからないんだからなあ
概念の例としてわかりやすい形になってるのが、オブジェクトな言語でのフレームワークでって話なんだが、理解する気もなく「言うな」なんだからなあ
お前は入ってこなくていいよ、もう理解する気もなく文句言うだけなんだから
165:デフォルトの名無しさん
20/12/04 18:42:24.91 gBsgQLOE.net
Javaや特定言語専用の概念を
このスレでするなって話だろ
166:デフォルトの名無しさん
20/12/04 18:46:53.85 9vuroJRJ.net
>>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週間だった)
167:デフォルトの名無しさん
20/12/04 18:47:46.31 NVkYzPbW.net
でもまあどちらにしろdateを2回呼んでるからタイミング次第ではバグになるよね
168:デフォルトの名無しさん
20/12/04 18:49:06.33 NVkYzPbW.net
> まあLinuxならdateはGNU dateに決まってる(?)だろうから
Alpine LinuxだとBusyBox
169:デフォルトの名無しさん
20/12/04 18:50:44.54 9vuroJRJ.net
>>165
>POSIXのそこらのC関数も当てはまる話だってのに、~
>概念の例としてわかりやすい形になってるのが、~
って言ってるのに。読めなさすぎだろう。方々で似たような実装なのは、特定言語特有の話ではなくコンピュータサイエンスwとしてのだからだろうにな
シェルスクリプトしか知りません興味ありませんすぎだろう
170:デフォルトの名無しさん
20/12/04 18:55:02.87 9vuroJRJ.net
>>168
そんなのあるのね。ちょいググったところではGNUの機能削除版?
でも、-d があるらしいから絶対的に(?)必要な機能はあるんじゃないのかな?
171:デフォルトの名無しさん
20/12/04 20:20:16.74 9vuroJRJ.net
>>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
172:デフォルトの名無しさん
20/12/04 20:48:41.94 C8tBrA1L.net
> case1 なら BSDに合わせろw いや、どれもどこかに合わせろw
まあ、それだな。
macOSもあるのでLinuxだけに準拠すればいいという時代じゃない
あとawkとかやめてくれまじで
173:デフォルトの名無しさん
20/12/04 20:51:59.59 9vuroJRJ.net
>>172
> awkとかやめてくれまじで
別に同じようなことできる他のを使えばいいだろう。そっちが素直に書けると思うなら、そういうように読み替えて
失礼ながら、マジでは以後も無視します。別に拘ってるわけでもないしね(使うことに/使わないことにどっちも)
174:デフォルトの名無しさん
20/12/04 20:53:34.79 C8tBrA1L.net
> 別に同じようなことできる他の
ってなに?まさかPerlとは言わないよね?w
175:デフォルトの名無しさん
20/12/04 20:56:17.67 9vuroJRJ.net
>>174
は??w
使うなと言ってるあなたのお好きなのにだよ。なんで俺に聞くw
176:デフォルトの名無しさん
20/12/04 21:51:54.12 rhOsBffZ.net
(意訳) クッソー、マウント取れねぇじゃねぇか
177:デフォルトの名無しさん
20/12/04 22:06:43.73 ECFKf8K5.net
>>158
dateを二回呼ばない理由って,
もしかして動作速度のせいって思ってる?
178:デフォルトの名無しさん
20/12/04 22:08:20.50 ECFKf8K5.net
>>171
同じクソ長いコードなら,
POSIX準拠のクソ長いコードの方がいくらかマシだなw
179:デフォルトの名無しさん
20/12/04 22:08:45.95 DO1guVvJ.net
へえ
180:デフォルトの名無しさん
20/12/04 22:11:28.39 UZX5oUlx.net
>>177
両方だろ。タイミング次第ではバグる。遅い。
> POSIX準拠のクソ長いコードの方がいくらかマシだなw
POSIX準拠のクソ長いコードってこのスレででてたっけ?
181:デフォルトの名無しさん
20/12/04 22:16:33.20 A/IGOY0L.net
そう取るのも病気だな
182:デフォルトの名無しさん
20/12/04 22:20:28.57 UZX5oUlx.net
反論は無しと、φ(..)メモメモ
183:デフォルトの名無しさん
20/12/04 22:24:14.25 aYzT9jgU.net
>>182
あいつを模写ってるのだろうが、馬鹿みたいだからやめなさいw
あいつと同じ馬鹿みたいな無理筋なマウント取りたいだけに見えるからw
184:デフォルトの名無しさん
20/12/04 22:26:47.45 UZX5oUlx.net
ほらやっぱり反論は無しと、φ(..)メモメモ
185:デフォルトの名無しさん
20/12/04 22:29:34.69 aYzT9jgU.net
>>184
お前はあいつなのか?
俺は>>180のレスに反してはないぞ、よくわからん追いきれてない部分があるけどな
だからやめなさいと言ってるだろw
186:デフォルトの名無しさん
20/12/04 22:36:07.76 UZX5oUlx.net
反対しないならレスしないでよ
POSIX準拠のクソ長いコードがでるのをまってるの
187:デフォルトの名無しさん
20/12/04 22:40:10.63 aYzT9jgU.net
えーっw
そういうこというとなおさらあいつみたいな自己中自分だけの世界で生きてるやつに...w
まあ、なんらかの恥ずかしさからそう言っちゃったと受け取っておくよw
大人しく俺も待つよww
188:デフォルトの名無しさん
20/12/04 23:47:12.43 IqAXsol3.net
自分もPOSIX準拠の長いコード、とやらを見てみたい
189:デフォルトの名無しさん
20/12/05 00:07:35.66 Q5wPn3Se.net
「POSIX準拠のクソ長いコード」って
>>158
この人が言ってた「コードもクソ長いし」を念頭に置いてるんじゃ
190:デフォルトの名無しさん
20/12/05 00:10:29.29 Q5wPn3Se.net
自分はポジックス信者ではないけど,
「BSDの場合はこうする,GNUの場合はこうする」っていうふうに
ダラダラ場合分けして長くなったコードより,
「POSIXに準拠する」ことを目的として長大になったコードの方が
どちらかというと良いと思うな。
GNU環境用とBSD環境用にコードを分けるのが一番賢いやりかただと思っているが。
191:デフォルトの名無しさん
20/12/05 01:06:34.20 8Ma0zJVZ.net
ダラダラ場合分けして長くなったコードってどこにあるの?
一つの変数に場合によって一つの値を設定してるのが一箇所あるだけのコードのこと?
192:デフォルトの名無しさん
20/12/05 01:24:03.81 Tpji0Itw.net
> 「POSIXに準拠する」ことを目的として長大になったコードの方
これもどれのことかわからん
193:デフォルトの名無しさん
20/12/05 01:36:28.83 Tpji0Itw.net
まさかPOSIX準拠のクソ長いコードって>>156のコードのことなのか?
あれはシェルスクリプトの部分はごく僅かでほぼ9割がawkスクリプト
しかもオプション解析とか無駄なことをやってるからクソ長くなってるだけ
いやアルゴリズムもなんかムダに長い気がするな
あれみていってるなら、POSIX準拠とはクソ長いは全く関係ない
194:デフォルトの名無しさん
20/12/05 08:05:02.70 L0bYd0ih.net
>>193
それは違う。(別に>>156を積極的に養護するつもりもないがw)
POSIXののdateには秒->日付、日付->秒、どちらの機能もないから自作するしかない。
awkを呼ぶにしてもPOSIXのだと時刻系関数がないから自作。
POSIXerはつらいということw
195:デフォルトの名無しさん
20/12/05 08:32:55.94 Tpji0Itw.net
POSIXerじゃなくてもLinuxとBSD(macOS)などに
対応しようと思ったら辛いけどな
196:デフォルトの名無しさん
20/12/05 11:58:33.40 En2ZUb0e.net
dateコマンド使うにしてもcoreutilsダウンロードして使うだけだから何も辛くない
自分はPOSIX云々より便利に使えるほうがいいから
cronパーサーみたいの使って`next_time ‘0 0 10 * * Fri’`みたいなコマンド作る
197:デフォルトの名無しさん
20/12/05 12:30:36.45 Q5wPn3Se.net
まあ「辛くない」って言える内は幸せよ……
経験を積んでくると,POSIXに準拠しようがしていまいが,
複数のシステムで期待どおりの動作をさせることが
どれだけ大変かが身に沁みて分かってくるから。
198:デフォルトの名無しさん
20/12/05 12:43:57.73 Q5wPn3Se.net
>>193
まさかもなにもそうじゃない?
知らないのかもしれないけど,POSIXって単にシェルの
挙動だけを決めてるんじゃなくて,
AWKとかC言語とか他のプログラミング言語の仕様も決めてるのよ。
ちなみにAWKのPOSIX仕様は↓ここで読める。
URLリンク(pubs.opengroup.org)
だから>>156のコードは「POSIX準拠のクソ長いコード」と言ってしまって良い。
199:デフォルトの名無しさん
20/12/05 13:34:14.56 ++4jxPOM.net
いやこのスレ、シェルスクリプトのスレだから
C言語で書いてもPOSIX準拠だね
だけどこのスレでC言語で答えるのは間違いでしょ
200:デフォルトの名無しさん
20/12/05 13:36:57.86 En2ZUb0e.net
>>197
>複数のシステムで期待どおりの動作をさせることが
>どれだけ大変かが身に沁みて分かってくるから。
がんばってw
201:デフォルトの名無しさん
20/12/05 17:21:06.89 WoNSxYte.net
>>199
>だけどこのスレでC言語で答えるのは間違いでしょ
ということはcoreutilsを別途入れるのは反則? w
202:デフォルトの名無しさん
20/12/05 20:10:29.89 ++4jxPOM.net
>>201
お前はコマンドを「作る」と「使う」の違いもわからんのか?
203:デフォルトの名無しさん
20/12/06 00:28:21.63 rU5Tjp1X.net
なんかグダグダやってるけどシェルスクリプトで
UNIXタイムの変換ってぐぐったら普通にでてくるやん
204:デフォルトの名無しさん
20/12/06 00:35:27.33 I5tPmPco.net
POSIX準拠じゃないからダメです
205:デフォルトの名無しさん
20/12/06 00:40:12.93 rU5Tjp1X.net
いやPOSIX準拠であるって
206:デフォルトの名無しさん
20/12/06 00:44:22.83 I5tPmPco.net
口先だけなら何とでも言えます
207:デフォルトの名無しさん
20/12/06 00:46:36.00 rU5Tjp1X.net
ググってみた?
何の単語でググったか書いてみてくれる?
208:デフォルトの名無しさん
20/12/06 01:09:11.46 I5tPmPco.net
ほらな、自分で出せないもんを人に調べさせようとする
新興宗教といっしょ
そんなもんはない
209:デフォルトの名無しさん
20/12/06 01:11:49.17 rU5Tjp1X.net
検索して見つけたページを出せなんて言ってないよ
ただあんたが検索した「単語」だけを書けばいい
見つからなくても実際に検索してなくてもOKだよ
210:デフォルトの名無しさん
20/12/06 01:14:01.83 rU5Tjp1X.net
ちなみになんでこんな事を聞いてるかというと
検索して見つけられないなんてことが
有るんだろうか?って疑問になったから
211:デフォルトの名無しさん
20/12/06 01:55:10.54 I5tPmPco.net
お前も見つけられてないじゃん
何が普通に出てくるだ嘘吐き
212:デフォルトの名無しさん
20/12/06 02:04:12.25 rU5Tjp1X.net
ちなみに俺が検索した単語は「シェルスクリプト UNIXタイム」
もう一度聞くけど、お前は何の単語で調べた?
213:デフォルトの名無しさん
20/12/06 02:08:46.21 NqcvkCcY.net
>>202
草生やしたコメントにマジレスするなら、あえて「わからん」と言うね。
極論すればシェルスクリプトのお題は常にC言語で解くことが可能で、
そのコードをコンパイルしたコマンドを使うことは可能。coreutilsもその一種だろ。
だったら明確な指針でも書いてくださいw
214:デフォルトの名無しさん
20/12/06 02:17:28.74 NqcvkCcY.net
>>203
ただの後出しジャンケン乙w
例えばUNIXタイム以外でどうにかするとかいうなら今からコメントする価値はあるが。
215:デフォルトの名無しさん
20/12/06 02:23:24.16 rU5Tjp1X.net
チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外
216:デフォルトの名無しさん
20/12/06 02:26:06.11 rU5Tjp1X.net
>>214
後出しジャンケンはそのとおりだけど
ジャンケンで俺が勝ったということでいいの?w
217:デフォルトの名無しさん
20/12/06 10:58:49.79 +d6RCg1G.net
>>211
お~い,なんの単語で調べたか答えてくれよ~
218:デフォルトの名無しさん
20/12/06 11:04:27.70 +d6RCg1G.net
>>215
なるほど。
そうするとPOSIX sedは計算完備ではないので
このスレで詳しく議論できるな。
よかったよかった
219:デフォルトの名無しさん
20/12/06 11:24:08.76 43odFZj2.net
>>281
sedもチューリング完全らしいよ
URLリンク(catonmat.net)
220:デフォルトの名無しさん
20/12/06 12:42:10.98 +d6RCg1G.net
>>219
それPOSIX sedで動きますか? 試してみましたか?
221:デフォルトの名無しさん
20/12/06 12:46:27.12 +d6RCg1G.net
ちなみに*GNU* sedの--posixオプション付けて動かして
「動いているように見える」からPOSIX sedに準拠してる!っていうのは
当然だめだからね。分かってると思うけど。
222:デフォルトの名無しさん
20/12/06 12:53:07.47 43odFZj2.net
>>220
自分で試せよ
GNU sedでも--posixつければGNU拡張は全部無効になるんだから
223:デフォルトの名無しさん
20/12/06 12:53:27.33 43odFZj2.net
> 当然だめだからね。
なぜ?
224:デフォルトの名無しさん
20/12/06 12:54:15.15 43odFZj2.net
つーか試してみて動いちゃったから
焦って後出しで--posixの話加えただろw
225:デフォルトの名無しさん
20/12/06 12:57:09.16 43odFZj2.net
倉庫番のやつ、99ステージあるけどどうやってるんだろうと思ったら
普通にソースコードに初期配置が文字列で書かれてるんだなw
226:デフォルトの名無しさん
20/12/06 12:58:22.00 43odFZj2.net
あ、99ステージ分って意味ね
227:デフォルトの名無しさん
20/12/06 17:06:58.34 +d6RCg1G.net
見苦しいのう…
228:デフォルトの名無しさん
20/12/06 18:06:23.94 1bhylYC8.net
ポジバカはスルーで!
229:デフォルトの名無しさん
20/12/06 19:32:19.33 43odFZj2.net
>>227
POSIX sedで試しましたか?
230:デフォルトの名無しさん
20/12/06 22:45:34.65 +d6RCg1G.net
>>229
鸚鵡返ししかできないのですか?
(どうも図星らしい)
231:デフォルトの名無しさん
20/12/06 23:00:58.44 43odFZj2.net
だから試せばPOSIX sedで動くのがわかるだろ
232:デフォルトの名無しさん
20/12/07 01:05:35.09 m+PLJN/4.net
ポジに執着して何かいいことありますか?
233:デフォルトの名無しさん
20/12/07 01:10:20.04 owPfoMMb.net
ネガより色再現性が高いんです
234:デフォルトの名無しさん
20/12/07 01:35:18.15 KzEPqVfm.net
>>232
POSIX準拠にすればどこでも動く
むしろPOSIX準拠にしないなら
別の言語でいいだろ
235:デフォルトの名無しさん
20/12/07 01:43:28.16 ZAwFxdvq.net
出たよw
236:デフォルトの名無しさん
20/12/07 02:12:05.18 zwD8QGuc.net
しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
処理系の問題だと言い張って、相手にしないつもりなの?
どこでも動くとか無責任なことは言うまい。
必要なのは動作確認。
237:デフォルトの名無しさん
20/12/07 08:49:22.82 KzEPqVfm.net
> しかし、ポジ準拠を謳いつつ、バグでもあったらどうすんだ?
動作確認すればいいだけ
238:デフォルトの名無しさん
20/12/07 14:06:32.50 /1DmOEYs.net
>>236
POSIX sedで動作確認しましたか?
239:デフォルトの名無しさん
20/12/07 14:32:40.29 zwD8QGuc.net
>>238
なんでオレが?w
必要なヤツがやれ!
240:デフォルトの名無しさん
20/12/07 17:48:32.54 l3Pgl7mQ.net
>>216
あー言い方がよくなかった。
すでに解決した問題のごく一部を後からかいつまんで、何か自分が有益な情報を
与えたかのようなふりをすること、だ。こういうのを何と言ったっけな。
コバンザメとか、そういうのにも近い。
241:デフォルトの名無しさん
20/12/07 19:02:40.12 hZsbXMrW.net
> すでに解決した問題
いいえ、POSIX準拠のシェルスクリプトでの
UNIXタイムの変換の話は出ていませんでした。
242:デフォルトの名無しさん
20/12/07 19:05:58.05 hZsbXMrW.net
有益な情報を与えたというか、単にググりましょうと言っただけですね。
下手の考え休むに似たり。ググればすぐ見つかるのに無駄な時間を過ごしてるなと言う話です。
243:デフォルトの名無しさん
20/12/07 23:44:28.22 /1DmOEYs.net
>>241
出てます。>>143
244:デフォルトの名無しさん
20/12/08 00:37:56.66 /pT3aml4.net
>>243
まとめるとね
POSIXのdateには+%sがないし、今日の日付は取得できるけど任意の日付は取得できない
+%jを使った計算は出てるけど月日形式じゃなくて、その年の初めからの日数(例 12月08日の場合は343日)からの
変換だから、一般的な年月日形式からの変換はできない。またUNIXタイムから年月日への変換は全くでてない。
という話の流れぐらいわかってください
245:デフォルトの名無しさん
20/12/08 13:13:44.13 eUC1uxpz.net
こいつらいっつも喧嘩してるな(´・ω・`)
246:デフォルトの名無しさん
20/12/08 17:56:01.38 TAcWm+rA.net
>>244
> またUNIXタイムから年月日への変換は全くでてない。
残念、 それも出てます。
>>156
247:デフォルトの名無しさん
20/12/08 19:11:00.60 NLDQQmQ4.net
脊髄反射を競うスレだからね
248:デフォルトの名無しさん
20/12/08 19:20:40.05 ZFT993pL.net
>>246
それはawkスクリプトかつクソコードということで決着はついたはずだが?
193デフォルトの名無しさん2020/12/05(土) 01:36:28.83ID:Tpji0Itw
まさかPOSIX準拠のクソ長いコードって>>156のコードのことなのか?
あれはシェルスクリプトの部分はごく僅かでほぼ9割がawkスクリプト
しかもオプション解析とか無駄なことをやってるからクソ長くなってるだけ
いやアルゴリズムもなんかムダに長い気がするな
あれみていってるなら、POSIX準拠とはクソ長いは全く関係ない
215デフォルトの名無しさん2020/12/06(日) 02:23:24.16ID:rU5Tjp1X>>218
チューリング完全かどうかでいいんじゃないの?
チューリング完全なもので実装=他言語で実装
ここはシェルスクリプトのスレなので対象外
249:デフォルトの名無しさん
20/12/08 19:34:42.29 TAcWm+rA.net
なるほど,ではAWKやsedを使わずに,
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を示してください。
250:デフォルトの名無しさん
20/12/08 19:43:49.41 ZFT993pL.net
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
を検索してください。
251:デフォルトの名無しさん
20/12/08 19:45:03.55 ZFT993pL.net
検索キーワードを自分で書くとか
わかっててわざとやってるんだろうか?w
252:デフォルトの名無しさん
20/12/08 20:44:10.87 hItfS6FC.net
ポジがどうのはよくわからんがsuperじゃないedもダメなの?今man引いたらだとgnu-ed(ed)が出てきてポジ云々書いてない
シェルスクリプト用途のgrep/sedの7割くらいは違和感なく置き換えられると思うが
253:デフォルトの名無しさん
20/12/08 21:53:32.63 ZFT993pL.net
>>252
POSIX準拠だと移植性が上がるのでベター
コマンド呼び出しは遅いのでシェルスクリプトで実装したほうが圧倒的に速い
この2つの話が混ざってる
254:デフォルトの名無しさん
20/12/08 22:20:03.23 TAcWm+rA.net
>>250
検索したところ
>>156
で言及されているコードが見付かりました。
255:デフォルトの名無しさん
20/12/08 22:28:27.56 TAcWm+rA.net
ていうか「AWKやsedを使っていないPOSIX準拠のシェルスクリプトでのUNIXタイムの変換」
は普通に気になるわ。
はたしてそれがシェルショッカー作のPOSIX AWK製 通常時間・UNIX時間相互変換スクリプト
より早いのかどうかも含めてね。
あ,なんかこういう書き方をすると発狂する奴が出てきそうなんで念の為言っておくが,
別に俺はPOSIX最高!なんていう主義じゃないよ。
ただ単に,「POSIXに従った通常時間・UNIX時間相互変換シェルスクリプト」として
>>156 を挙げたら,
「それはAWKで書かれてるからシェルスクリプトじゃない(←まあ理解はできる),
俺は >>203 から始まる一連のスレで言及されている
203デフォルトの名無しさん2020/12/06(日) 00:28:21.63ID:rU5Tjp1X>>214
なんかグダグダやってるけどシェルスクリプトで
UNIXタイムの変換ってぐぐったら普通にでてくるやん
204デフォルトの名無しさん2020/12/06(日) 00:35:27.33ID:I5tPmPco
POSIX準拠じゃないからダメです
205デフォルトの名無しさん2020/12/06(日) 00:40:12.93ID:rU5Tjp1X
いやPOSIX準拠であるって
「ググッたら普通に出てきて」「AWKやsedで実装されてなくて」「POSIXに準拠した」
「UNIX時間を変換するシェルスクリプト」が知りたいのよ。
>>248 でも言及があるな。
それともこれは嘘?
256:デフォルトの名無しさん
20/12/08 22:30:51.38 TAcWm+rA.net
まあこんだけグダグダやってもそのコードが挙げられない,ってことは,
多分最初に言及してたのは >>156 のコードで,
それを脊髄反射で否定してしまったから出そうにも出せなくなってしまってる,ってとこだろう。
↑これに反論したけりゃ実物のコードを出せ。そしたらそれで済む話だ。
俺は気にしないが,君が体裁を気にするような人物なら,コードを出してくれたら
「すいませんでした」と言ってもいいぞ。
257:デフォルトの名無しさん
20/12/08 22:47:32.95 3Lge4PBr.net
date コマンド1回で、POSIXで、awkやsedなしで、早い処理で ....
意味不明になってきてるけども。
まあそうやって遊びたい人は自分でやれば。ってそういう奴に限って自分ではできない
258:デフォルトの名無しさん
20/12/08 23:12:57.26 TAcWm+rA.net
>>257
いやいやそれを俺に言うのは違うでしょ。
俺は >>156 でいいじゃん,と言っている。
ところが >>203 やら >>250 で,
「AWKやsedを使わない」
「POSIX準拠の」
という条件が出てきている訳だ。
それは純粋に知りたいでしょ。
俺の知っているPOSIXに準拠しつつ
UNIX時間変換を行えるのはAWKでのやりかた。
259:デフォルトの名無しさん
20/12/09 00:29:09.55 vZ4bQifg.net
あれ,全然出てこないな。
くっだらねえ反論はあれだけ反射的なのにw
260:デフォルトの名無しさん
20/12/09 00:32:59.35 jODQKuwy.net
口先POSIXおじさんw
261:デフォルトの名無しさん
20/12/09 00:45:24.40 XzWvmoKM.net
単純な時間計算の質問をネタにマウンティング合戦を1週間も続けられるってすごいよね
シェルスクリプトにこだわる人はさすが生産的!!
262:デフォルトの名無しさん
20/12/09 00:58:47.06 eCHhpLek.net
>>258
ググったらすぐ出てきたよ?
キーワードはこのスレに書いてある
263:デフォルトの名無しさん
20/12/09 01:21:27.68 S42PKcAA.net
志村けんは生きてるよ?
ググったら詳細出てくる
264:デフォルトの名無しさん
20/12/09 01:25:58.77 eCHhpLek.net
そうにかして言い返そうと頑張ったんだろうなとは思う(笑)
265:デフォルトの名無しさん
20/12/09 01:26:14.19 eCHhpLek.net
どうにかして
266:デフォルトの名無しさん
20/12/09 01:48:07.85 vZ4bQifg.net
なぜ、現物を持って来れないのか。
理由は自ずと分かるよね?
267:デフォルトの名無しさん
20/12/09 01:49:45.29 vZ4bQifg.net
>>260
そのあだ名いいなw
>>262 なんて典型的。
268:デフォルトの名無しさん
20/12/09 01:50:34.09 eCHhpLek.net
>>249
> なるほど,ではAWKやsedを使わずに,
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」
> を示してください。
「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
上位5つの検索結果=「現物」を持ってきてください
人によって順位は違うらしいからね
なぜ現物を持ってこれないのか?
検索で簡単に見つかるという現実を受け入れられないからなのかな?
269:デフォルトの名無しさん
20/12/09 01:51:21.47 eCHhpLek.net
検索結果を貼り付けるだけでいいんだけどな
なんでそんな簡単なことができないんだろう?
270:デフォルトの名無しさん
20/12/09 02:03:19.79 S8QsR+fb.net
天才的w計算式で確証持てないとかかなあ
もしくは本当にググればすぐ出てるだろうかw
271:デフォルトの名無しさん
20/12/09 02:32:53.12 eCHhpLek.net
まあ計算式みても確証は持てないわな
Rich’s sh (POSIX shell) tricks
URLリンク(www.etalabs.net)
これ有名な記事なんだけど、ここに書いてあるUNIXタイムへの
天才的な計算式はバグってる
URLリンク(lobste.rs)
ここで指摘されてる
何がいいたいかって言うと、この手のやつは計算式でもアルゴリズムでも
ぱっと見で確証持てないなんて当たり前だよってこと
うるう年の計算でさえ人類は何度もバグを入れてきた
272:デフォルトの名無しさん
20/12/09 02:37:26.28 eCHhpLek.net
ん?今気づいたが>>156のやつって、Rich’s sh (POSIX shell) tricksに
書いてあるバグありバージョンじゃんw
echoに書き換えてるから気づかなかったが計算式が一緒
awkスクリプトのやつも正しいかどうかわからんよねと
言おうとして、見返して気づいた
273:デフォルトの名無しさん
20/12/09 02:44:05.93 eCHhpLek.net
比較してみたw 上から、
・>>156版(バグ)
・Rich’s sh (POSIX shell) tricks版(バグ)
・訂正版
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)") ))
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)"` ))
echo $(( `TZ=GMT0 date +"((%Y-1600)*365+(%Y-1601)/4-(%Y-1601)/100+(%Y-1601)/400+1%j-1000-135140)*86400+(1%H-100)*3600+(1%M-100)*60+(1%S-100)"` ))
3箇所、1601を1600に書き間違えてるんだな
検証大事
274:デフォルトの名無しさん
20/12/09 02:48:54.69 znx7LG09.net
あれほど自分で言い張ってたくせに
275:デフォルトの名無しさん
20/12/09 02:51:35.80 eCHhpLek.net
>>274
誰にレスしてるのか知らないが、多分レスする相手を間違ってる
276:デフォルトの名無しさん
20/12/09 02:52:11.84 AAEJArmB.net
>>267
本当に口先口数だけだったなw
277:デフォルトの名無しさん
20/12/09 02:55:23.53 eCHhpLek.net
ということで、検索ぐらいしましょうねw
じゃあ寝る
278:デフォルトの名無しさん
20/12/09 02:56:41.58 jODQKuwy.net
このようにPOSIXに拘泥するとバグります。
と言うよりPOSIXバカは一般人よりバグを出す率が高い。
証拠はググったら出てくるw
279:デフォルトの名無しさん
20/12/09 02:57:35.34 eCHhpLek.net
POSIX関係ない。単に>>156がバカなだけ
検証もせずバグありコードと冗長なawkスクリプト持ってきてるw
280:デフォルトの名無しさん
20/12/09 03:01:08.59 AAEJArmB.net
またいつものごまかしw
281:デフォルトの名無しさん
20/12/09 03:03:51.77 eCHhpLek.net
バグコードでした・・・事実
冗長なawkコードでした・・・事実
282:デフォルトの名無しさん
20/12/09 09:31:11.63 vZ4bQifg.net
自分がコードを出せないからといって他人を僻むのはやめましょうw
結局、POSIXの範囲でUnixタイム→通常時間への変換はAWK使う方法くらいしかない。
ほんまポジバカは口先だけで何も生産しようとしないな。
別に擁護する訳じゃないが、ちゃんとコードを出すだけ >>156 とかのほうがまだマシ
バグがあったとしても指摘して修正できる。
一方、コードを出さなければいつまでたっても自分の間違いをつっつかれることはない。
283:デフォルトの名無しさん
20/12/09 10:06:49.17 ZEWfqGU4.net
>>282
なんてキーワードで検索した?
なんで検索結果の上位5位という「現物」を
ここに貼り付けられないの?
再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな?
284:デフォルトの名無しさん
20/12/09 10:52:32.53 PAUMj9+d.net
簡単に見つかるなら貼ればいいじゃん
貼れないのは無いから
285:デフォルトの名無しさん
20/12/09 10:56:12.39 h/snEzA+.net
まだやっててわろた
286:デフォルトの名無しさん
20/12/09 11:32:48.42 LWKBPFtb.net
ポバカ vs アンチポ
というよりは、検索の押し付けあい?w
287:デフォルトの名無しさん
20/12/09 11:59:10.93 ZEWfqGU4.net
検索結果の上位5位がないってどういう状態?
見つけたものじゃなくて、検索結果だよ。
Google検索が壊れてるの?
288:デフォルトの名無しさん
20/12/09 12:19:16.95 vZ4bQifg.net
どんだけ検索結果にこだわってんだよwww
そんなのどうでもいいから
お前が見つけたサイトやら記事やらを晒せって言ってんだよ。
頭おかしいなりに付き合ってたら
ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも
と思ってここまでレスを返してあげてきたがもういいわ。
>>156 のutconvで十分。
AWKスクリプトがどうとかは関係ない。
あとPOSIXにこだわるのをやめるのも一つの手だぞ。
date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。
289:デフォルトの名無しさん
20/12/09 12:32:45.70 ZEWfqGU4.net
> ポジキチからなにかPOSIX準拠でAWKに依存しないコードが得られるかも
だから検索したら得られるって何度も言ってる
検索キーワードも(誰かがw)書いた
得られるのは確定、お前に検索ぐらいしろよと言ってるだけ
290:デフォルトの名無しさん
20/12/09 12:35:10.53 ZEWfqGU4.net
> date -dとか%sとかなんてほぼどんなシステムでも使えるんだから。
有名である程度のシェアを持ってるmacOSで使えない
291:デフォルトの名無しさん
20/12/09 12:43:08.94 jODQKuwy.net
だから検索したら得られないって何度も言ってる
得られないのは確定、お前に結果ぐらい貼れよと言ってるだけ
無いから貼れないんだろうがな
292:デフォルトの名無しさん
20/12/09 12:45:51.62 ZEWfqGU4.net
> だから検索したら得られないって何度も言ってる
それが事実かどうか判断するために
検索結果をここに貼れと言ってる
無関係の記事や、見つからなかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ?
293:デフォルトの名無しさん
20/12/09 13:11:36.81 jODQKuwy.net
> だから検索したら得られるって何度も言ってる
それが事実かどうか判断するために
検索結果をここに貼れと言ってる
見つかった記事や、見つかったという結果でいいんだよ。
単に検索結果だけ貼ればいい。それぐらいできるでしょ?
294:デフォルトの名無しさん
20/12/09 13:16:48.95 ZEWfqGU4.net
オウム返ししかできなくなったか
295:デフォルトの名無しさん
20/12/09 13:17:35.38 jODQKuwy.net
はよ貼れや
あるならなプゲラ
296:デフォルトの名無しさん
20/12/09 13:18:05.27 ZEWfqGU4.net
むしろなんでシェルショッカーの記事を見つけだせたのかわからん
こっちの方が検索しても見つからないぞ
(あ、シェルショッカー本人かw)
297:デフォルトの名無しさん
20/12/09 13:19:51.75 rIU0lDlE.net
検索したらPOSIXはオワコンって書いてあった。
検索すればすぐ出てくる。
出てこないというならその結果を貼れ。
298:デフォルトの名無しさん
20/12/09 13:20:27.65 ZEWfqGU4.net
>>295
検索して見つからなかったというのなら
その見つからなかった結果を貼れと言ってます
あるなら貼るだと、なければ貼れないけど、
あってもなくても貼れなら
検索結果が貼れないなんてことはないのです
299:デフォルトの名無しさん
20/12/09 13:21:20.38 ZEWfqGU4.net
>>297
なんてキーワードで検索したんですか?
ちなみに見つかる検索キーワードは
上の方で「」つきでしっかり書かれています。
300:デフォルトの名無しさん
20/12/09 13:22:45.72 jODQKuwy.net
しょうゆは発ガン物質。
検索すればすぐ出てくる。
検索して見つからなかったというのなら
その見つからなかった結果を貼れ
301:デフォルトの名無しさん
20/12/09 13:24:09.58 ZEWfqGU4.net
ちなみにこちらは「見つかっても見つからなくてもいいから」
「検索結果」を貼れと言ってます。
検索したという事実を見たいだけです。
無関係な例えは潰しておきますw
302:デフォルトの名無しさん
20/12/09 13:27:11.24 rIU0lDlE.net
見つかった結果を貼れ
見つからないから貼れないで詭弁でごねてるだけ
303:デフォルトの名無しさん
20/12/09 13:28:41.82 ZEWfqGU4.net
>>302
代わりにお前でもいいよw
見つからなくていい。ググって出てきたものを貼るだけ
再掲
> 「POSIX準拠のシェルスクリプトでのUNIXタイムの変換」でGoogleで検索して
> 上位5つの検索結果=「現物」を持ってきてください
> 人によって順位は違うらしいからね
>
> なぜ現物を持ってこれないのか?
> 検索で簡単に見つかるという現実を受け入れられないからなのかな?
304:デフォルトの名無しさん
20/12/09 13:31:32.04 jODQKuwy.net
見つかったなら貼ればいいだけ
見つからない、貼れない、
だからすり替えでごまかしてるだけw
誰にも効いてないがw
305:デフォルトの名無しさん
20/12/09 13:38:52.41 ZEWfqGU4.net
検索キーワードがあれば十分でしょ?w
そこで見つかると言ってる
306:デフォルトの名無しさん
20/12/09 13:43:40.09 jODQKuwy.net
見つかった証拠出せ。
貼るだけ。
これができないのはなぜでしょう?
答え:嘘んこだからw
307:デフォルトの名無しさん
20/12/09 14:27:06.23 ZEWfqGU4.net
嘘か本当か自分で調べればわかること
本当に調べたのであれば検索結果を貼ることが出来るはず
見つかった証拠を貼れと言ってるのではない
検索した結果を貼れと言ってるだけで内容についてはどうでもいい
これができないのはなぜでしょう?
答え:検索すらできない人だからw
308:デフォルトの名無しさん
20/12/09 15:51:00.03 An1T/9HU.net
【置換前文字列1】を【置換後文字列1】に、【置換前文字列2】を【置換後文字列2】に、、、
ってときに
sedを一行で書くのではなく、何行かに分けてかくのが普通ですか?
(単に複業数を一行に見せるやり方という意味ではなく、置換前後の対応的な書き方があるのかなと)
309:デフォルトの名無しさん
20/12/09 16:14:27.63 vZ4bQifg.net
findコマンドについて、
対象となるファイルが一つも見付からなかった場合でも(grepとかと違って)
終了ステータスは0のままであることって保証されてるっけ?
ここ↓の終了ステータスの節をみても微妙に分からない。
URLリンク(pubs.opengroup.org)
310:デフォルトの名無しさん
20/12/09 16:28:08.45 vZ4bQifg.net
>>308
sed -e '<置換命令>;<置換命令>;<置換命令>'
ってやるのと
sed -e '<置換命令>' -e '<置換命令>' -e '<置換命令>'
ってやるのとの違いってこと?
$ <<. sed -e 's/a/b/g' -e 's/b/c/g'
a-b-c
.
→c-c-c
$ <<. sed -e 's/a/b/g;s/b/c/g'
a-b-c
.
→c-c-c
↑こういう「普通の」操作なら別にどっちでも結果が変わらないから
自分が好きな方で書けばいいんじゃないかな。