シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
シェルスクリプト総合 その29
レス数が1000を超えています。これ以上書き込みはできません。
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
2018/09/21(金) 23:36:59.94ID:/eJt2TVD
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2018/09/21(金) 23:39:20.07ID:/eJt2TVD
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
2018/09/21(金) 23:45:34.73ID:/eJt2TVD
2018/09/21(金) 23:48:15.75ID:/eJt2TVD
そして注意書きに従ってください。
…回線切って首釣ってくる
…回線切って首釣ってくる
2019/02/08(金) 12:13:50.02ID:OGIJJ+v/
age
2019/02/08(金) 13:03:01.43ID:VZqJ7QJN
8デフォルトの名無しさん
2019/02/09(土) 15:41:36.60ID:6/bHpQ6m 回線って言葉の定義によるが、今どきの優先での光とかでも回線とは言う。光回線とかね。
9デフォルトの名無しさん
2019/02/09(土) 15:41:50.96ID:6/bHpQ6m 優先じゃなくて有線
2019/02/09(土) 22:28:27.73ID:ksUvHKJZ
printfのフォーマットについてなんだけど
printf '%05d' '33' → 00033
みたいなゼロ埋めってどのシステムでもサポートされているのかな。
%5dみたいな記述はPOSIXの仕様書に在ったから確実だけど
ゼロ埋めフラグについて何の言及もしてないっぽいんだよね。
%gとかと違って「実装を要求しない」とも言っていないし。
printf '%05d' '33' → 00033
みたいなゼロ埋めってどのシステムでもサポートされているのかな。
%5dみたいな記述はPOSIXの仕様書に在ったから確実だけど
ゼロ埋めフラグについて何の言及もしてないっぽいんだよね。
%gとかと違って「実装を要求しない」とも言っていないし。
2019/02/15(金) 12:20:14.92ID:8DR6dyZB
あ。自決。
よーく読んでもっつーか普通に書いてあったわ。
よーく読んでもっつーか普通に書いてあったわ。
2019/02/15(金) 23:18:53.00ID:Hwu/ac/i
結論を書いてから死ぬんだ
13デフォルトの名無しさん
2019/02/16(土) 00:07:44.70ID:FAU3Sbcr 自決か・・・
2019/02/16(土) 01:21:53.36ID:SPTGalft
15デフォルトの名無しさん
2019/02/16(土) 01:31:05.83ID:k5VPqkkr シェルスクリプトで数値を扱うのがおかしい。シェルスクリプトは文字として認識しているから、もともと数値の取り扱いは気をつけないといけない。
2019/02/16(土) 01:35:36.86ID:SPTGalft
そんな事言われましても、シェルスクリプトに
数値計算の機能がありますし
数値計算の機能がありますし
17デフォルトの名無しさん
2019/02/16(土) 02:04:59.47ID:k5VPqkkr2019/02/16(土) 06:28:35.63ID:OVG8+uJO
>>14
なんか勘違いしてね?
俺が言ってるのは0フラグ。
pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html#tag_20_94_13
ちなみにprintf '%b' '\0ddd'はPOSIXでは8進数しか定められてない
のでその「8進数しか受け付けない」システムは正当。
なんか勘違いしてね?
俺が言ってるのは0フラグ。
pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html#tag_20_94_13
ちなみにprintf '%b' '\0ddd'はPOSIXでは8進数しか定められてない
のでその「8進数しか受け付けない」システムは正当。
2019/02/16(土) 06:29:08.87ID:OVG8+uJO
2019/02/16(土) 06:56:37.82ID:0pA9DINd
もともと
2019/02/16(土) 08:05:07.54ID:SPTGalft
今のシェルスクリプトの話をしろよ
需要に応じて変わるんだよ
需要に応じて変わるんだよ
2019/02/16(土) 14:10:14.71ID:DdK+9zEs
〃〃∩ _, ,_
⊂⌒( つД´) < ヤダヤダ
`ヽ_ ノ ⊂ノ
ジタバタ
⊂⌒( つД´) < ヤダヤダ
`ヽ_ ノ ⊂ノ
ジタバタ
23デフォルトの名無しさん
2019/02/16(土) 15:55:59.02ID:FAU3Sbcr 昔はよく expr コマンドを使ったものぢゃよ
2019/02/16(土) 16:39:46.54ID:MuF4+GQB
exprは(シェルによるけど)grepみたいな正規表現が単語に対して使えるからすごく重宝してた。
でも最近はそもそもそういう非可搬な機能を使うならbashの[[ <str> ~= "/regexp/" ]]でいいやってなってる。
でも最近はそもそもそういう非可搬な機能を使うならbashの[[ <str> ~= "/regexp/" ]]でいいやってなってる。
25デフォルトの名無しさん
2019/02/21(木) 04:12:08.57ID:UnmnTW3q http://mevius.5ch.net/test/read.cgi/tech/1535194140/l50
わざわざひと月経ってから重複立てた理由は?
わざわざひと月経ってから重複立てた理由は?
2019/02/21(木) 04:19:12.64ID:LAfLZLuz
そっちには特定のOSでしか動かないで存在しないのが入ってるからじゃね。特定のOSの板かスレが相応しいのだろう
2019/02/21(木) 04:24:39.60ID:LAfLZLuz
ああ、特定のOSでしかでもないのか。じゃ、すでに専用スレあるのでってとこか。言葉が違うのに混ぜることもないだろしな
2019/02/22(金) 17:45:17.27ID:W8hCm55w
特定のOS?
29デフォルトの名無しさん
2019/02/23(土) 13:42:47.53ID:9pS68leH 月経の文字に反応
2019/02/25(月) 15:22:22.19ID:uN5/G9fw
受け取った文字列が想定しているものかを判定する場合で
「特定の種類の文字のみ構成されている」かを調べる方法として
↓こういうのを考えてみた
test "$VAR" = "${VAR#*[^a-z]}"
成功したらVARは[a-z]のみで構成されているということ。
あと一応POSIX 2018にも準拠してる。
grep(1)などを用いて処理するより早いと思うんだが
最近のPCは処理が速すぎて今一違いが分からんw
「特定の種類の文字のみ構成されている」かを調べる方法として
↓こういうのを考えてみた
test "$VAR" = "${VAR#*[^a-z]}"
成功したらVARは[a-z]のみで構成されているということ。
あと一応POSIX 2018にも準拠してる。
grep(1)などを用いて処理するより早いと思うんだが
最近のPCは処理が速すぎて今一違いが分からんw
2019/02/25(月) 15:46:48.84ID:jjF3mg4o
case $VAR in
*[^a-z]*) ;; # a-z以外の文字がある
*) ;; # a-zのみで構成
esac
でいいやろ?
置換処理しないから更に速いはず
*[^a-z]*) ;; # a-z以外の文字がある
*) ;; # a-zのみで構成
esac
でいいやろ?
置換処理しないから更に速いはず
32デフォルトの名無しさん
2019/03/17(日) 00:42:11.09ID:vYpDkOnV foo() {
echo 1
echo
echo
echo
}
a="$(foo)"
echo "$a"
ってやったら、最後に改行がいくつあっても消えちゃうんだけどさ
aに改行ごと入れる方法ない?bash依存なしで
echo 1
echo
echo
echo
}
a="$(foo)"
echo "$a"
ってやったら、最後に改行がいくつあっても消えちゃうんだけどさ
aに改行ごと入れる方法ない?bash依存なしで
33デフォルトの名無しさん
2019/03/17(日) 01:22:55.25ID:MBTcz8WL2019/03/17(日) 22:55:33.85ID:8/J7EWL3
$ ( a="a,,b,,c"; IFS=","; set -- $a; echo $3; )
b
$ ( a="a b c"; IFS=" "; set -- $a; echo $3; )
c
なんでや?
b
$ ( a="a b c"; IFS=" "; set -- $a; echo $3; )
c
なんでや?
2019/03/17(日) 23:27:41.47ID:uNuvPAZ3
なんでやと言われましても…
2019/03/17(日) 23:50:57.39ID:Y/j3QiNl
空(くう)を理解出来ないタイプの馬鹿って結構いるんだよな
2019/03/17(日) 23:54:01.74ID:8/J7EWL3
スペース か カンマ かによって
挙動が違うっておかしいだろ
挙動が違うっておかしいだろ
2019/03/18(月) 00:09:19.55ID:iRq0tZYn
挙動は同じだけど?
2019/03/18(月) 00:25:52.00ID:Z0jAEi8m
わざわざそうしてるってなんで理解できないんだろかな
2019/03/18(月) 01:57:01.83ID:0Zzw4/NV
2019/03/18(月) 03:19:57.67ID:bAHak1a6
同じ挙動してるじゃん?
2019/03/18(月) 03:38:05.43ID:YXzanjRe
>>40
別人だからな。なんで同一視してんのかわからんな
別人だからな。なんで同一視してんのかわからんな
2019/03/18(月) 03:39:03.36ID:0Zzw4/NV
あぁ、ブラウザで見るとスペースが1個になるのねw
$ ( a="a<カンマ2個>b<カンマ2個>c"; IFS=","; set -- $a; echo $3; )
b
$ ( a="a<スペース2個>b<スペース2個>c"; IFS=" "; set -- $a; echo $3; )
c
これで意味分かるやろ?
<カンマ2個>は ,, のこと
<スペース2個> も同様
$ ( a="a<カンマ2個>b<カンマ2個>c"; IFS=","; set -- $a; echo $3; )
b
$ ( a="a<スペース2個>b<スペース2個>c"; IFS=" "; set -- $a; echo $3; )
c
これで意味分かるやろ?
<カンマ2個>は ,, のこと
<スペース2個> も同様
2019/03/18(月) 03:41:08.39ID:YXzanjRe
2019/03/21(木) 19:54:41.91ID:jzAF3+In
あからさまに挙動見て仕様 理解できないとか・・・
2019/03/21(木) 22:56:46.84ID:RZb/N1K/
シェルスクリプトにヒアドキュメントって
"HERE" でも 'HERE' でも変数展開行われないのか・・・
"HERE" は HERE と同じだと思っていた
"HERE" でも 'HERE' でも変数展開行われないのか・・・
"HERE" は HERE と同じだと思っていた
2019/03/21(木) 23:25:35.49ID:bEjwjHsM
なんで展開されると思えるのか、そこが少し不思議
2019/03/22(金) 02:16:32.57ID:xgV52nBe
>>47
シェルスクリプトだけじゃなくて、他の言語も勉強するといいですよ
シェルスクリプトだけじゃなくて、他の言語も勉強するといいですよ
2019/03/22(金) 03:13:10.80ID:eOBuYNEJ
>>48
なんで俺に?
なんで俺に?
50デフォルトの名無しさん
2019/03/22(金) 06:47:12.77ID:aoKwVDMo > If no part of word is quoted, all lines of the here-document shall be expanded for parameter expansion, command substitution, and arithmetic expansion.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04
\HERE とか
HE"R"E とか
""HERE でもいいんだな
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04
\HERE とか
HE"R"E とか
""HERE でもいいんだな
2019/03/22(金) 11:57:50.97ID:g5h3mGP7
a = <<"EOT"
あ
EOT
Ruby では、" " なら、バックスラッシュ・式展開が使える。
' ' なら使えない
あ
EOT
Ruby では、" " なら、バックスラッシュ・式展開が使える。
' ' なら使えない
2019/03/22(金) 12:46:19.30ID:eOBuYNEJ
ヒアの中身の話をしてるんじゃないのか?
なんだかrubyとかやってる人ってとんちんかんな人多いよなあ
なんだかrubyとかやってる人ってとんちんかんな人多いよなあ
2019/03/22(金) 14:48:23.02ID:HU9xhxJ/
2019/03/22(金) 20:16:49.37ID:eOBuYNEJ
2019/03/22(金) 22:38:33.79ID:z9ChYb8e
あー、もしかして、ヒアドキュメントが
他の言語にもあるって知らない人かな?
もう少し勉強したほうが良いよ
他の言語にもあるって知らない人かな?
もう少し勉強したほうが良いよ
2019/03/22(金) 23:03:22.48ID:u7m3wqcd
スレタイ読めない人がいるな
2019/03/22(金) 23:42:28.23ID:HU9xhxJ/
この件は別に他の言語での知識経験から故にで全然おかしくないだろう
単にそう思ったのはそうだったのかで済む話でしかないだろうに。何を拘っているんだか
単にそう思ったのはそうだったのかで済む話でしかないだろうに。何を拘っているんだか
2019/03/22(金) 23:44:22.75ID:eOBuYNEJ
環境によって頭を切り替えられない馬鹿だという告白ってこと?
それならまあ納得なのだが。
それならまあ納得なのだが。
2019/03/22(金) 23:48:13.41ID:HU9xhxJ/
なにを言っているんだか。単に「よく」調べないで経験則で思い込んでいたってだけだろう。そういう人もいてもおかしくはないだろう
誰かのように、どうも最初から馬鹿にしたいだけなら違うんだろうけどな
誰かのように、どうも最初から馬鹿にしたいだけなら違うんだろうけどな
2019/03/23(土) 11:21:25.87ID:V0vJvcu9
「普通は」他の言語の知識があるわけで、
他の言語がそうだったから、シェルスクリプトでもそうだと
思ったのに違っていて驚いたってだけの話だろ
なんで言語が変わったら、0から言語仕様を勉強します。
以前の言語の知識は全て捨てて、最初から学び直しますってなるんだ?
文法は「知らない」 or 「間違いなく知ってる」 のどちらかしか無いはずなんです。
「他の言語がそうだったから、同じだろう」なんて思うやつなんてありえないんです。
そう考えてるのか?そんなやついないだろ。
他の言語がそうだったから、シェルスクリプトでもそうだと
思ったのに違っていて驚いたってだけの話だろ
なんで言語が変わったら、0から言語仕様を勉強します。
以前の言語の知識は全て捨てて、最初から学び直しますってなるんだ?
文法は「知らない」 or 「間違いなく知ってる」 のどちらかしか無いはずなんです。
「他の言語がそうだったから、同じだろう」なんて思うやつなんてありえないんです。
そう考えてるのか?そんなやついないだろ。
2019/03/23(土) 12:19:57.25ID:O+DUttYl
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
2019/03/23(土) 12:27:43.57ID:daYwWoP0
2019/03/23(土) 13:51:52.81ID:V0vJvcu9
1. シェルスクリプトの仕様に文句言われて悔しい
2. 俺にとっての常識が、井の中の蛙だとばれて悔しい
どっちか
2. 俺にとっての常識が、井の中の蛙だとばれて悔しい
どっちか
2019/03/23(土) 14:29:37.54ID:daYwWoP0
いやいやw君がなんだか。なにその読めなさはwずっと同じ人?
2019/03/23(土) 14:39:44.63ID:q0JuU/5a
2019/03/23(土) 14:42:21.52ID:V0vJvcu9
俺が>>46なんだが?
2019/03/23(土) 14:51:13.97ID:daYwWoP0
>>66
えーっ、おれが馬鹿を晒してしまったやんけっ
なにを長文で、わかりづらいネチっこい最後の部分。あんたのスタンスなんぞがわかっているのが居るんだからなにをわざわざな...もう
まあ、すまんかった、いろいろと
えーっ、おれが馬鹿を晒してしまったやんけっ
なにを長文で、わかりづらいネチっこい最後の部分。あんたのスタンスなんぞがわかっているのが居るんだからなにをわざわざな...もう
まあ、すまんかった、いろいろと
2019/03/23(土) 16:37:26.87ID:q0JuU/5a
>>66
だからだよw
だからだよw
2019/03/23(土) 18:12:02.34ID:V0vJvcu9
理由が書いてないものに意味はないよ。
ばーかばーかっていってるのと同じだからね
ばーかばーかっていってるのと同じだからね
2019/03/23(土) 22:04:19.40ID:x8gXkLwZ
Rubyさいこおおおおおおお
シェルはほろびろおおおお
シェルはほろびろおおおお
2019/03/23(土) 23:36:39.28ID:xoOtakOI
やれやれ、延長戦か。昨日ので終わってれば普通のまともな人に見えたのに。
2019/03/24(日) 11:30:58.75ID:WkQ3cHj8
ジョブって使ったことあります?
fgとかbgぐらいはあると思うんですが、
そういうのってコマンドラインじゃなくて
シェルスクリプトで使うことって考えられますかね?
fgとかbgぐらいはあると思うんですが、
そういうのってコマンドラインじゃなくて
シェルスクリプトで使うことって考えられますかね?
2019/03/25(月) 08:32:22.35ID:Gker1m8S
俺はないけど
単に経験が浅いだけかも知れない
ただ,似非の非同期処理として,ネットワーク資源をwgetなんかで取得しているジョブと同時に
その資源に依存しない種々の作業を同時に実行して,
その資源が必要になった段階でwaitコマンドでwgetの終了を待つ,
みたいなことはよくやる。
単に経験が浅いだけかも知れない
ただ,似非の非同期処理として,ネットワーク資源をwgetなんかで取得しているジョブと同時に
その資源に依存しない種々の作業を同時に実行して,
その資源が必要になった段階でwaitコマンドでwgetの終了を待つ,
みたいなことはよくやる。
2019/03/29(金) 07:25:41.51ID:KhBeLwdl
USR1シグナルって受け取ったら
trapしてても死んじゃうの?
trapしてても死んじゃうの?
2019/03/29(金) 08:09:44.39ID:iZJL5S3u
いいや
シグナルに対してハンドラが無い場合死ぬのであって、trapしてんだか死なない
シグナルに対してハンドラが無い場合死ぬのであって、trapしてんだか死なない
2019/03/29(金) 10:51:28.75ID:KhBeLwdl
いや死ぬんだが? これ実行してみ
[main.sh]
#!/bin/sh
trap 'echo USR1' USR1
for i in $(seq 1 10); do
./child.sh "$$" &
done
wait
[child.sh]
#!/bin/sh
sleep 0.1
kill -USR1 "$1"
[main.sh]
#!/bin/sh
trap 'echo USR1' USR1
for i in $(seq 1 10); do
./child.sh "$$" &
done
wait
[child.sh]
#!/bin/sh
sleep 0.1
kill -USR1 "$1"
2019/03/29(金) 14:30:15.21ID:iZJL5S3u
ただの正常終了、main.sh処理全部終わりましたでしょがー
意図した動きになるようには書いてないだけでしょう
意図した動きになるようには書いてないだけでしょう
2019/03/29(金) 15:51:57.16ID:KhBeLwdl
>>77
実行すらしてないようだから、実行結果書いておきますねw
$ ./main.sh
USR1
USR1
$ ./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
実行すらしてないようだから、実行結果書いておきますねw
$ ./main.sh
USR1
USR1
$ ./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
./child.sh: 4: kill: No such process
2019/03/29(金) 16:03:50.50ID:iZJL5S3u
なにそれ。性根の悪いヤツだな
man bashでwait及びシグナルんとこ読みなさい
man bashでwait及びシグナルんとこ読みなさい
2019/03/29(金) 16:07:09.38ID:KhBeLwdl
>>79
はいどうぞ。
wait [n ...]
n が与え
られていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。
疑問点があれば受け付けますよ?
はいどうぞ。
wait [n ...]
n が与え
られていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。
疑問点があれば受け付けますよ?
2019/03/29(金) 16:08:06.24ID:iZJL5S3u
なんか続きそうでメンドくさくなった
ただの正常終了、「main.sh処理全部終わりました」
だよ。
wait
じゃなくて
until wait
do
:
done
とかだろう。どう意図した動きにしたいのか知らんけど、間違いは
ただの正常終了、「main.sh処理全部終わりました」
だよ。
wait
じゃなくて
until wait
do
:
done
とかだろう。どう意図した動きにしたいのか知らんけど、間違いは
2019/03/29(金) 16:08:42.72ID:iZJL5S3u
マジで性根の悪いヤツだった。言ったことやってから言えよな、もう
2019/03/29(金) 16:13:17.88ID:KhBeLwdl
> 言ったこと
ってどれ?w
ってどれ?w
2019/03/29(金) 16:16:44.69ID:iZJL5S3u
「シグナルんとこ読みなさい」だよ。くそがw
よく笑ってるな。まじでなんなん?ただのプライドが高いアレか
よく笑ってるな。まじでなんなん?ただのプライドが高いアレか
2019/03/29(金) 23:35:25.52ID:6TL4Muj2
どこまで本気なのかなあ。
小学生が頭の悪そうななぞなぞで得意がってるとか、そういう雰囲気を感じる。
とりあえず
「シグナルで死んだんなら、なんで echo が実行されてんだよ!」
とつっこんでおくよ。
小学生が頭の悪そうななぞなぞで得意がってるとか、そういう雰囲気を感じる。
とりあえず
「シグナルで死んだんなら、なんで echo が実行されてんだよ!」
とつっこんでおくよ。
86デフォルトの名無しさん
2019/03/30(土) 15:21:37.81ID:iJ+PacLA シグナルで死んでるんじゃなくて全てのプロセスが終了する前に wait から抜けちゃうってことだな。
理由はシグナル受け取っているからだが。
理由はシグナル受け取っているからだが。
2019/03/30(土) 23:21:26.53ID:s3xILrfA
Ruby のSignal モジュールを使え
割り込み : Ctrl + C
Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)
割り込み : Ctrl + C
Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)
2019/03/30(土) 23:27:14.67ID:VjxmND9i
スレ違い
2019/03/31(日) 06:29:53.92ID:QZIPpnnl
ちゅうかお題違い
2019/04/01(月) 01:31:26.57ID:IKNNLLYB
for i in *; do
echo "$i"
done
これって必ずソートされるの?
echo "$i"
done
これって必ずソートされるの?
2019/04/01(月) 01:55:34.42ID:dFHstMQf
POSIXでソートすることになってる
2019/04/01(月) 08:49:30.39ID:IKNNLLYB
へー、取得したいのは最初の一個だけでいいんだけど、
その最初の一個は、小さいものになるんか
というか、一個だけ取得する速い方法ないかな?
でもソートしてるなら、結局内部で全部読み込むのか?
その最初の一個は、小さいものになるんか
というか、一個だけ取得する速い方法ないかな?
でもソートしてるなら、結局内部で全部読み込むのか?
2019/04/01(月) 09:43:29.00ID:NOgINnam
へんなの居付いたな
2019/04/01(月) 10:02:05.99ID:IKNNLLYB
そりゃ俺が立てたスレだしなー
2019/04/01(月) 10:28:36.49ID:ifPcZP08
ls -1U とか?
2019/04/04(木) 00:24:00.86ID:opkeFDjY
1.txt, 2.txt, 3.txt と3つファイルがあるディレクトリでecho * したら
これらのファイルがでてくるのに空のディレクトリで、
echo * したら * と表示されるのなんで?
何も表示されないでほしいんだけど、この仕様、なにか便利なの?
これらのファイルがでてくるのに空のディレクトリで、
echo * したら * と表示されるのなんで?
何も表示されないでほしいんだけど、この仕様、なにか便利なの?
2019/04/04(木) 03:15:34.42ID:7s/hio3T
echoがやってるんじゃないし...
2019/04/04(木) 03:21:22.66ID:xQGJKB0I
エコーさんはね、もらったものをエコーするだけだってね、ママがいってたの
2019/04/04(木) 04:46:21.43ID:19nHnpBp
cat *
とかで困るだろうに
とかで困るだろうに
100デフォルトの名無しさん
2019/04/04(木) 11:44:59.87ID:opkeFDjY echoがやってるかどうかは論点じゃないしw
101デフォルトの名無しさん
2019/04/04(木) 13:06:19.36ID:/xpppM3k いや、重要だぞ。何の man を読めばいいかというのは。読む気があればね。
102デフォルトの名無しさん
2019/04/04(木) 14:25:13.45ID:opkeFDjY それで質問の答は?
103デフォルトの名無しさん
2019/04/04(木) 15:00:27.41ID:19nHnpBp 答えはmanに書いてある。なんでかは「読まなければならない」けど
104デフォルトの名無しさん
2019/04/04(木) 15:08:08.53ID:vligoyoR >>102
echo は渡された文字列をそのまま出力する仕様なので、* を渡されたら * が出力される。というのが回答だよ。
echo は渡された文字列をそのまま出力する仕様なので、* を渡されたら * が出力される。というのが回答だよ。
105デフォルトの名無しさん
2019/04/04(木) 16:46:44.95ID:/xpppM3k まあ、「'*' はいらない」というのももっともなことだしね。
bash を使ってるなら man の「パス名展開」の項を読めばいいかも。
bash じゃない場合は…読めばなんとかなるでしょ。
bash を使ってるなら man の「パス名展開」の項を読めばいいかも。
bash じゃない場合は…読めばなんとかなるでしょ。
106デフォルトの名無しさん
2019/04/04(木) 16:53:45.66ID:19nHnpBp いらないからいる(?)になってるんだけどね。それもそうmanに書いてある
107デフォルトの名無しさん
2019/04/04(木) 17:59:04.72ID:opkeFDjY108デフォルトの名無しさん
2019/04/04(木) 18:17:25.75ID:19nHnpBp だからmanに書いてあるってw
109デフォルトの名無しさん
2019/04/04(木) 19:15:53.98ID:opkeFDjY 書いてないから聞いてる
110デフォルトの名無しさん
2019/04/04(木) 19:20:19.17ID:19nHnpBp 書いてあるんだなあ。書いてないんじゃなくて探してないだな
111デフォルトの名無しさん
2019/04/04(木) 19:23:19.35ID:opkeFDjY 最近、無いものをあると言いはるのが増えてるのか?
無いものはいくら探してもないし、
有るならさっと出すことぐらいできるだろ
無いものはいくら探してもないし、
有るならさっと出すことぐらいできるだろ
112デフォルトの名無しさん
2019/04/04(木) 19:24:58.44ID:19nHnpBp なんかいたね、ちょっと前のシグナルの質問してたのとか
煽って自分では労力さかずに答え出させようしてんの?w
煽って自分では労力さかずに答え出させようしてんの?w
113デフォルトの名無しさん
2019/04/04(木) 19:30:55.71ID:opkeFDjY んで答えは?w
114デフォルトの名無しさん
2019/04/04(木) 19:31:22.20ID:19nHnpBp manに書いてあるw
115デフォルトの名無しさん
2019/04/04(木) 20:09:11.90ID:opkeFDjY 書いてない
116デフォルトの名無しさん
2019/04/04(木) 20:21:01.39ID:19nHnpBp マンザイとしてはそれはないな。オモロクないやん、マンザイとして。いい感じだったのにw
その言い張り方が、なんか既視感ありすぎ。そしてよく「言いはるのが増えてるのか」なんて言えるなあ
まあ、ふんわりとした答えは>>99で答えてるんだけどね。それはmanに書いてた説明からだよ
ところでOSなに使ってるの?
その言い張り方が、なんか既視感ありすぎ。そしてよく「言いはるのが増えてるのか」なんて言えるなあ
まあ、ふんわりとした答えは>>99で答えてるんだけどね。それはmanに書いてた説明からだよ
ところでOSなに使ってるの?
117デフォルトの名無しさん
2019/04/04(木) 20:24:57.07ID:opkeFDjY catが困るのは、単にcatの仕様がクソってだけだろう
標準入力から読み込むためのオプションの - があるのに、
引数なしだと標準入力から読み込もうとするわけだから
標準入力から読み込むためのオプションの - があるのに、
引数なしだと標準入力から読み込もうとするわけだから
118デフォルトの名無しさん
2019/04/04(木) 20:28:22.13ID:19nHnpBp 浅いな、catは一例なのに
そのやたらプライド高そうだけど、全然そのプライドを裏付けるもの無いから、こんなことになってんやで?まあ、プライド高いから言ってもわからんだろけど
ちなみに、'*'でなくて''でもよさげなんだけど、'*'の方がやっぱりいいんだな(と、思う。そう具体的に書いてない、''に言及してはいないけど)。さて、どうしてでしょう?
そのやたらプライド高そうだけど、全然そのプライドを裏付けるもの無いから、こんなことになってんやで?まあ、プライド高いから言ってもわからんだろけど
ちなみに、'*'でなくて''でもよさげなんだけど、'*'の方がやっぱりいいんだな(と、思う。そう具体的に書いてない、''に言及してはいないけど)。さて、どうしてでしょう?
119デフォルトの名無しさん
2019/04/04(木) 20:45:06.72ID:opkeFDjY > さて、どうしてでしょう?
お前にその答えが言えんの? *の方が良いと思ってるようだが、
正確にはディレクトリが空の時に帰ってくるのは、正確には*じゃないんだが
お前にその答えが言えんの? *の方が良いと思ってるようだが、
正確にはディレクトリが空の時に帰ってくるのは、正確には*じゃないんだが
120デフォルトの名無しさん
2019/04/04(木) 20:49:41.59ID:19nHnpBp うん、>>117なんて宣える人にそう言われてたくないけど。やっぱ想像はつかないのね。なのになんで疑われているのかさっぱり。また煽って喋らせる手法?w
正確にはってのはイミフ。なんの正確?なにを言いたいのかイミフだがほぼデフォルトの環境ではそうだよ、てか、そう決められているはずなんだがなあ
正確にはってのはイミフ。なんの正確?なにを言いたいのかイミフだがほぼデフォルトの環境ではそうだよ、てか、そう決められているはずなんだがなあ
121デフォルトの名無しさん
2019/04/04(木) 20:54:08.11ID:opkeFDjY 聞いてるのは、決められているかどうかじゃなくて
なぜそういう風に決めたかだって言ってるだろ
なぜそういう風に決めたかだって言ってるだろ
122デフォルトの名無しさん
2019/04/04(木) 20:55:07.83ID:opkeFDjY だいたい、俺の想像していることがわかってない時点で
お前はダメダメなんやで?わかってるか?
俺の想像していることぐらい読み取れ!
お前はダメダメなんやで?わかってるか?
俺の想像していることぐらい読み取れ!
123デフォルトの名無しさん
2019/04/04(木) 20:56:45.08ID:opkeFDjY ディレクトリが空の時に帰ってくるのは * ではありません。
echo ? だと ? が帰ってきます。
echo ? だと ? が帰ってきます。
124デフォルトの名無しさん
2019/04/04(木) 20:58:07.29ID:opkeFDjY echo *[a-z]* だと *[a-z]* が帰ってきますが、
さて、このディレクトリは空でしょうか?
それとも *[a-z]* という名前のファイルがあるのでしょうか?
さて、このディレクトリは空でしょうか?
それとも *[a-z]* という名前のファイルがあるのでしょうか?
125デフォルトの名無しさん
2019/04/04(木) 20:58:24.17ID:19nHnpBp だから、なぜそういう風に決められたかっていうことをずーーっと言っているんだけど?
あんたが自分勝手な自分だけの思いで自分の考えに固執してるから先に進んでないんだけなのに。既視感ありまくりw
'*'の方がいいとまでちょっと進んで言っているのに聞かないで反発してるだけだし。答えは書いてある。さあ、理解に向けて進んでみようw
あんたが自分勝手な自分だけの思いで自分の考えに固執してるから先に進んでないんだけなのに。既視感ありまくりw
'*'の方がいいとまでちょっと進んで言っているのに聞かないで反発してるだけだし。答えは書いてある。さあ、理解に向けて進んでみようw
126デフォルトの名無しさん
2019/04/04(木) 21:02:36.29ID:19nHnpBp >>123,124
そりゃそうだ。根本的に勘違いしてる。*なんだから'*'、?なんだから'?'、[a-z]*なんだから'[a-z]*'でしょに。なにを言っているのだか
なんで、ますますプライドを裏打ちするものが無いって自ら開陳するかなあ。捨てなその意味ないプライドは。文字通りプライドが邪魔する(意味が違うか?w)でしょうに
そりゃそうだ。根本的に勘違いしてる。*なんだから'*'、?なんだから'?'、[a-z]*なんだから'[a-z]*'でしょに。なにを言っているのだか
なんで、ますますプライドを裏打ちするものが無いって自ら開陳するかなあ。捨てなその意味ないプライドは。文字通りプライドが邪魔する(意味が違うか?w)でしょうに
127デフォルトの名無しさん
2019/04/04(木) 21:04:35.03ID:7s/hio3T128デフォルトの名無しさん
2019/04/04(木) 21:04:35.25ID:opkeFDjY だから答えは書いてないって言ってるだろ
いい加減、悪魔の証明は辞めてくれ。
無いものは無い。無いという証拠を見つけられないなら
悪魔はいるってことだ!←ほんと馬鹿みたいだ
いい加減、悪魔の証明は辞めてくれ。
無いものは無い。無いという証拠を見つけられないなら
悪魔はいるってことだ!←ほんと馬鹿みたいだ
129デフォルトの名無しさん
2019/04/04(木) 21:07:34.48ID:19nHnpBp 答えは書いてあるよ。ふんわりと。あんたに理解できるようには書いてないかもだけどwいや、プライド高いお人だからわかると思うんだけどということでw
悪魔の証明でもなんでもないのになあ。なんとか言わせたくて必死な感じ?通用しないよ何度もはw
悪魔の証明でもなんでもないのになあ。なんとか言わせたくて必死な感じ?通用しないよ何度もはw
130デフォルトの名無しさん
2019/04/04(木) 21:08:58.45ID:opkeFDjY ※書いてないから、言えないのです
131デフォルトの名無しさん
2019/04/04(木) 21:09:37.50ID:19nHnpBp132デフォルトの名無しさん
2019/04/04(木) 21:11:14.30ID:19nHnpBp >>130
そんなあけすけな手にはのらないww
そんなあけすけな手にはのらないww
133デフォルトの名無しさん
2019/04/04(木) 21:46:57.92ID:gljFUA1G もうどっちがどっちなのか分からんけど
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。
134デフォルトの名無しさん
2019/04/04(木) 21:49:48.14ID:19nHnpBp ありゃりゃ。終わっちゃうかっw
親切だな。まあいいことだけど。ヤツにとっていいこととは思えないけど(余計なお世話)
親切だな。まあいいことだけど。ヤツにとっていいこととは思えないけど(余計なお世話)
135デフォルトの名無しさん
2019/04/04(木) 21:52:55.41ID:19nHnpBp136デフォルトの名無しさん
2019/04/04(木) 22:06:28.63ID:opkeFDjY137デフォルトの名無しさん
2019/04/04(木) 22:52:03.02ID:opkeFDjY ありゃ? もうすぐ答え出るかと思ってひとっ風呂浴びてきたんだが
まだでてないや。誰か曰くmanに書いてあるらしいから
知らなくても答える気があるなら、答えられるはずなんだけどなー
な?書いてないだろ?
まだでてないや。誰か曰くmanに書いてあるらしいから
知らなくても答える気があるなら、答えられるはずなんだけどなー
な?書いてないだろ?
138デフォルトの名無しさん
2019/04/04(木) 22:55:28.86ID:19nHnpBp そこまで言い張ってあったらどうすの?いやあるんだけど
黙って逃げるだけの未来しか見えないw
黙って逃げるだけの未来しか見えないw
139デフォルトの名無しさん
2019/04/04(木) 23:03:19.00ID:opkeFDjY じゃあ先に答えを言ってくれた人へ
ありがとう
これでもう黙って逃げるだけの未来はなくなりました。
ありがとう
これでもう黙って逃げるだけの未来はなくなりました。
140デフォルトの名無しさん
2019/04/04(木) 23:04:43.01ID:19nHnpBp141デフォルトの名無しさん
2019/04/04(木) 23:10:20.77ID:opkeFDjY 書いてある内容をコピペすりゃ終わりなのに
長引かせてるのはお前やで?
長引かせてるのはお前やで?
142デフォルトの名無しさん
2019/04/04(木) 23:13:02.33ID:19nHnpBp そうだよ?言われなくても、そうだよ?(すでに>>131で書いてあるやん?w)
なにを急に言い出してるの?それもあんたも律儀にレスしてんのに
なにを急に言い出してるの?それもあんたも律儀にレスしてんのに
143デフォルトの名無しさん
2019/04/04(木) 23:14:01.18ID:opkeFDjY 自信満々に荒らし宣言w
144デフォルトの名無しさん
2019/04/04(木) 23:17:24.59ID:19nHnpBp いやいや、それを言うならあんたもだって。なんだかなあ。それに俺はちゃんと答えている(ふんわりと)、それにあーだこーだ言っているのはあんたなんですけど?どっちがよりでしょうねえ?
第三者から荒らしと言われてもしょうがないかと思うが、あんたが言い出すとは、まあ、先の「言い張る〜」と同じパターンやね
てかさ、せっかく>>133が出てきたのにそうやってなぜ流すようなことすんの?w
第三者から荒らしと言われてもしょうがないかと思うが、あんたが言い出すとは、まあ、先の「言い張る〜」と同じパターンやね
てかさ、せっかく>>133が出てきたのにそうやってなぜ流すようなことすんの?w
145デフォルトの名無しさん
2019/04/05(金) 11:46:05.38ID:zBV/1Std >>133
待ってますよ
待ってますよ
146デフォルトの名無しさん
2019/04/07(日) 10:20:38.47ID:eWoMr/0V >>133
まだですか?
まだですか?
147デフォルトの名無しさん
2019/04/08(月) 15:20:56.18ID:NNFII5Ih 横からだけど面倒臭いから答えを書いとくよ
bash なら man bash の Pathname Expansion に書かれてるから、それをちゃんと読んでから質問してね。
bash なら man bash の Pathname Expansion に書かれてるから、それをちゃんと読んでから質問してね。
148デフォルトの名無しさん
2019/04/08(月) 15:59:00.29ID:3hZl3Wdo >>147
そこに「なぜ*を返すことにしたのかという理由」は書いてないって言うのが面倒だから、ソースとGoogle翻訳貼り付けるわ
https://git.savannah.gnu.org/cgit/bash.git/tree/doc/bashref.info#n2116
*パターンマッチング::シェルがパターンをどのようにマッチングするか。
単語分割後、 '-f'オプションが設定されていない限り(* Set The Builtin::)、Bashは各単語をスキャンして文字 '*'、 '?'、および '['を探します。
これらの文字の1つが現れると、その単語はPATTERNと見なされ、パターンと一致するファイル名のアルファベット順にソートされたリストに置き換えられます(* Pattern Matching::)。
一致するファイル名が見つからず、シェルオプション 'nullglob'が無効の場合、単語は変更されません。
'nullglob'オプションが設定されていて、一致が見つからない場合、その単語は削除されます。
'failglob'シェルオプションが設定されていて、一致するものが見つからなかった場合、エラーメッセージが表示され、コマンドは実行されません。
シェルオプション 'nocaseglob'が有効になっている場合、アルファベット文字の大文字と小文字を区別せずに照合が実行されます。
パターンがファイル名展開に使用されるとき、文字 '。' シェルオプション 'dotglob'が設定されていない限り、ファイル名の先頭またはスラッシュの直後に明示的にマッチしなければなりません。
ファイル名 '。' 'dotglob'が設定されていても、 '..'は常に明示的に一致しなければなりません。
それ以外の場合は、「。」 文字は特別扱いされません。
ファイル名を一致させる場合、スラッシュ文字は常にパターン内のスラッシュと明示的に一致させる必要がありますが、
他の一致コンテキストでは、後述のように特殊なパターン文字と一致させることができます。
そこに「なぜ*を返すことにしたのかという理由」は書いてないって言うのが面倒だから、ソースとGoogle翻訳貼り付けるわ
https://git.savannah.gnu.org/cgit/bash.git/tree/doc/bashref.info#n2116
*パターンマッチング::シェルがパターンをどのようにマッチングするか。
単語分割後、 '-f'オプションが設定されていない限り(* Set The Builtin::)、Bashは各単語をスキャンして文字 '*'、 '?'、および '['を探します。
これらの文字の1つが現れると、その単語はPATTERNと見なされ、パターンと一致するファイル名のアルファベット順にソートされたリストに置き換えられます(* Pattern Matching::)。
一致するファイル名が見つからず、シェルオプション 'nullglob'が無効の場合、単語は変更されません。
'nullglob'オプションが設定されていて、一致が見つからない場合、その単語は削除されます。
'failglob'シェルオプションが設定されていて、一致するものが見つからなかった場合、エラーメッセージが表示され、コマンドは実行されません。
シェルオプション 'nocaseglob'が有効になっている場合、アルファベット文字の大文字と小文字を区別せずに照合が実行されます。
パターンがファイル名展開に使用されるとき、文字 '。' シェルオプション 'dotglob'が設定されていない限り、ファイル名の先頭またはスラッシュの直後に明示的にマッチしなければなりません。
ファイル名 '。' 'dotglob'が設定されていても、 '..'は常に明示的に一致しなければなりません。
それ以外の場合は、「。」 文字は特別扱いされません。
ファイル名を一致させる場合、スラッシュ文字は常にパターン内のスラッシュと明示的に一致させる必要がありますが、
他の一致コンテキストでは、後述のように特殊なパターン文字と一致させることができます。
149デフォルトの名無しさん
2019/04/08(月) 15:59:15.40ID:3hZl3Wdo nocaseglob'、 'nullglob'、 'failglob'、および 'dotglob'オプションの説明については、* note The Shopt Builtin ::の 'shopt'の説明を参照してください。
'GLOBIGNORE'シェル変数はパターンにマッチするファイル名のセットを制限するために使用されるかもしれません。
「GLOBIGNORE」が設定されている場合、「GLOBIGNORE」のパターンの1つとも一致する各一致ファイル名は、一致リストから削除されます。
'nocaseglob'オプションが設定されている場合、 'GLOBIGNORE'のパターンとのマッチングは大文字小文字の区別なしに実行されます。
ファイル名 '。' 'GLOBIGNORE'が設定されていてヌルでない場合は、 '..'は常に無視されます。
ただし、 'GLOBIGNORE'をNULL以外の値に設定すると、 'dotglob'シェルオプションが有効になるので、他のすべてのファイル名は '。'で始まります。 一致します。
'。'で始まるファイル名を無視するという古い動作をするには、 '。*'を 'GLOBIGNORE'のパターンの1つにします。
'GLOBIGNORE'が設定されていない場合、 'dotglob'オプションは無効になります。
'GLOBIGNORE'シェル変数はパターンにマッチするファイル名のセットを制限するために使用されるかもしれません。
「GLOBIGNORE」が設定されている場合、「GLOBIGNORE」のパターンの1つとも一致する各一致ファイル名は、一致リストから削除されます。
'nocaseglob'オプションが設定されている場合、 'GLOBIGNORE'のパターンとのマッチングは大文字小文字の区別なしに実行されます。
ファイル名 '。' 'GLOBIGNORE'が設定されていてヌルでない場合は、 '..'は常に無視されます。
ただし、 'GLOBIGNORE'をNULL以外の値に設定すると、 'dotglob'シェルオプションが有効になるので、他のすべてのファイル名は '。'で始まります。 一致します。
'。'で始まるファイル名を無視するという古い動作をするには、 '。*'を 'GLOBIGNORE'のパターンの1つにします。
'GLOBIGNORE'が設定されていない場合、 'dotglob'オプションは無効になります。
150デフォルトの名無しさん
2019/04/08(月) 16:53:14.39ID:6GvfotlI 存在する機能の説明なのでその機能について説明しているだけかなと
151デフォルトの名無しさん
2019/04/08(月) 16:56:27.29ID:3hZl3Wdo 133 名前:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 21:46:57.92 ID:gljFUA1G
もうどっちがどっちなのか分からんけど
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。
136 自分:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 22:06:28.63 ID:opkeFDjY [17/21]
>>133
echo * (別にechoである必要はない)で
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由
もうどっちがどっちなのか分からんけど
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。
136 自分:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 22:06:28.63 ID:opkeFDjY [17/21]
>>133
echo * (別にechoである必要はない)で
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由
152デフォルトの名無しさん
2019/04/08(月) 17:06:51.60ID:6GvfotlI なぜかは、
だいたいは、こんな感じ(だろうで)、
if(argc < 2){
fprintf(stderr, "usage: hoge file ...\n");
exit(1);
}
if((fp = fopen(argv[1], ...)) == NULL){
warn("%s", arg);
exit(1);
}
$ rm -v '*'
rm: *: No such file or directory
$ rm -v ''
rm: : No such file or directory
$ rm -v
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
どれがエラーとして適切?ということとかとか。他にエラーにならないのが困るとか
スクリプトでしかの話なら何も返さないというのもあるけど、スクリプトだけのためのじゃないからねえ。上記の通りコマンド的にはエラーの方がわかりやすく、シェルがどのコマンドだから展開方法を変えるというわけでもないし
>>151
そこにあるキーワードで別のmanがググれるよ
だいたいは、こんな感じ(だろうで)、
if(argc < 2){
fprintf(stderr, "usage: hoge file ...\n");
exit(1);
}
if((fp = fopen(argv[1], ...)) == NULL){
warn("%s", arg);
exit(1);
}
$ rm -v '*'
rm: *: No such file or directory
$ rm -v ''
rm: : No such file or directory
$ rm -v
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
どれがエラーとして適切?ということとかとか。他にエラーにならないのが困るとか
スクリプトでしかの話なら何も返さないというのもあるけど、スクリプトだけのためのじゃないからねえ。上記の通りコマンド的にはエラーの方がわかりやすく、シェルがどのコマンドだから展開方法を変えるというわけでもないし
>>151
そこにあるキーワードで別のmanがググれるよ
153デフォルトの名無しさん
2019/04/08(月) 17:08:25.01ID:6GvfotlI154デフォルトの名無しさん
2019/04/08(月) 17:14:32.56ID:3hZl3Wdo >>152
それどれもエラーになってますよ?
それどれもエラーになってますよ?
155デフォルトの名無しさん
2019/04/08(月) 17:16:06.60ID:6GvfotlI エラーだもの。「エラーの方がわかりやすく」ってとこ?すまん変な文になった
そのままの方がわかりやすく(?)
かな。
そのままの方がわかりやすく(?)
かな。
156デフォルトの名無しさん
2019/04/08(月) 17:16:38.44ID:3hZl3Wdo157デフォルトの名無しさん
2019/04/08(月) 17:19:09.45ID:6GvfotlI ああ、「どれがエラーとして適切?」もか。「どれもエラーだがどれが適切?」というつもりだったんだが。「どれもエラーだがどれがエラメッセージとして適切?」までか
158デフォルトの名無しさん
2019/04/08(月) 17:20:08.01ID:6GvfotlI159デフォルトの名無しさん
2019/04/08(月) 17:21:42.07ID:6GvfotlI てか、またおまえか?いちいち教えてもらったのに文句つけてるんだなw
160デフォルトの名無しさん
2019/04/08(月) 17:23:26.97ID:3hZl3Wdo >>157
for i in *.txt; do rm "$i"; done
(すでに拡張子txtのファイルが全て削除されている場合)
rm: '*.txt' を削除できません: そのようなファイルやディレクトリはありません
これは適切なエラーメッセージだと思いますか?
for i in *.txt; do rm "$i"; done
(すでに拡張子txtのファイルが全て削除されている場合)
rm: '*.txt' を削除できません: そのようなファイルやディレクトリはありません
これは適切なエラーメッセージだと思いますか?
161デフォルトの名無しさん
2019/04/08(月) 17:24:20.52ID:3hZl3Wdo162デフォルトの名無しさん
2019/04/08(月) 17:24:53.61ID:6GvfotlI >>152の最後に書いてあるだろう。なんでいちいちいちいち教えなきゃならんのねん
コマンドとしては適切だろう
コマンドとしては適切だろう
163デフォルトの名無しさん
2019/04/08(月) 17:27:49.54ID:6GvfotlI >>161
いちいち教えてもらわなきゃならないのに、隙あらば文句つけるようなヤツに丁寧に教える必要はないってことだよ。社会的に一般的なことだなw
まあ、もともとはあんたに具体的に教えたくないから、あんたじゃない人に他にあるよと言ってみただけだな
てか、ぜんぜん進んでねーな。こんなやりとりしてもぜんぜん進まないよ?少しは頭を働かせて自力でやってみなさいな
いちいち教えてもらわなきゃならないのに、隙あらば文句つけるようなヤツに丁寧に教える必要はないってことだよ。社会的に一般的なことだなw
まあ、もともとはあんたに具体的に教えたくないから、あんたじゃない人に他にあるよと言ってみただけだな
てか、ぜんぜん進んでねーな。こんなやりとりしてもぜんぜん進まないよ?少しは頭を働かせて自力でやってみなさいな
164デフォルトの名無しさん
2019/04/08(月) 17:29:55.75ID:3hZl3Wdo 1. man bashにある
2. ありませんでした。
3. 他のmanにある
4. ありませんでした。
この流れか
2. ありませんでした。
3. 他のmanにある
4. ありませんでした。
この流れか
165デフォルトの名無しさん
2019/04/08(月) 17:31:26.91ID:3hZl3Wdo 日本語に訳してあげないと、書いてないことを認めなかったくせに
何言ってるんだろうね。
何言ってるんだろうね。
166デフォルトの名無しさん
2019/04/08(月) 17:31:36.42ID:6GvfotlI マジで「読めない」のな...どうしようかw
167デフォルトの名無しさん
2019/04/08(月) 17:32:31.71ID:6GvfotlI168デフォルトの名無しさん
2019/04/08(月) 17:35:16.40ID:3hZl3Wdo お前が出てくるといつも進まんよなw
169デフォルトの名無しさん
2019/04/08(月) 17:37:34.84ID:6GvfotlI あんたが進まなだけだからな、別にあんたが進まないのは俺はどうでもいいんだけど、なにか進みたがってるあんたがどう動くのかが興味ありの
なんで俺にいちいちレスしてんの?w
なんで俺にいちいちレスしてんの?w
170デフォルトの名無しさん
2019/04/08(月) 17:42:21.44ID:3hZl3Wdo > なんで俺にいちいちレスしてんの?w
お前が言ってることが嘘だからだよ。
manにそういう仕様にした理由は書いてませんでした。
お前が言ってることが嘘だからだよ。
manにそういう仕様にした理由は書いてませんでした。
171デフォルトの名無しさん
2019/04/08(月) 17:42:42.54ID:3hZl3Wdo 知らないなら、素直に知らないって言えばいいのに
172デフォルトの名無しさん
2019/04/08(月) 17:44:22.86ID:6GvfotlI173デフォルトの名無しさん
2019/04/08(月) 18:02:56.45ID:6GvfotlI 探せたか?wwまあ、探せても「読めない」可能性が高いかな
・やっぱり、探せない
・探せたが、読めなくて文句つける
・探せて、黙って逃げる
・他
どれでしょう。まあこう書いたら「他」にする可能性が高いか
・やっぱり、探せない
・探せたが、読めなくて文句つける
・探せて、黙って逃げる
・他
どれでしょう。まあこう書いたら「他」にする可能性が高いか
174デフォルトの名無しさん
2019/04/08(月) 18:16:37.06ID:3hZl3Wdo175デフォルトの名無しさん
2019/04/08(月) 18:23:16.92ID:6GvfotlI 「性懲りもなく」...「訳してあげた」んだろ
すんげええなあ、今までさんざん無能っぷりを自ら披露しているのにw 単によくレスを見なかった人がと考えはしないのね。自分がレスをよく見ないくせにw
お前のレスはぜーーーーんぶ自分内で完結している。こんな他人と交わらない方がいいんじゃないの?
呆れ果てるな。まあ、その自己の世界で妄想ダダ漏れすればいいと思うよ
すんげええなあ、今までさんざん無能っぷりを自ら披露しているのにw 単によくレスを見なかった人がと考えはしないのね。自分がレスをよく見ないくせにw
お前のレスはぜーーーーんぶ自分内で完結している。こんな他人と交わらない方がいいんじゃないの?
呆れ果てるな。まあ、その自己の世界で妄想ダダ漏れすればいいと思うよ
176デフォルトの名無しさん
2019/04/08(月) 18:24:46.51ID:3hZl3Wdo ↑ほらな。俺の言ったことを否定したいだけw
177デフォルトの名無しさん
2019/04/08(月) 18:28:18.84ID:6GvfotlI そりゃ、否定するよ。矛盾自己肯定だらけだもの
もしかして、あんたって40超えたおっさんで外人にクソガキ呼ばわりされたことない?って気になったり。まあ、違うかw
もしかして、あんたって40超えたおっさんで外人にクソガキ呼ばわりされたことない?って気になったり。まあ、違うかw
178デフォルトの名無しさん
2019/04/08(月) 18:34:08.77ID:3hZl3Wdo >>117
40超えたおっさんにクソガキ呼ばわりでもされたか?w
40超えたおっさんにクソガキ呼ばわりでもされたか?w
179デフォルトの名無しさん
2019/04/08(月) 18:34:25.94ID:3hZl3Wdo180デフォルトの名無しさん
2019/04/08(月) 18:37:29.49ID:6GvfotlI いや、そういう(一部で有名な)有名人がいてな、あんたの属性が似すぎててな。幾つかは知らんが、あんたもそのうちそうなるだろうな
年意外同じだからw 年取ればそれが変わるわけでもないぞw
年意外同じだからw 年取ればそれが変わるわけでもないぞw
181デフォルトの名無しさん
2019/04/08(月) 18:40:11.70ID:3hZl3Wdo 嫌いなやつはみんな一緒。思考回路が単純(笑)
182デフォルトの名無しさん
2019/04/08(月) 18:43:03.63ID:6GvfotlI イミフ。なんで「嫌い」とかアホなこと言っているのだか。人のふり見て我がふり直すとかあるでしょ?そういう意味だよ、そういう有名人
誰ともわからないハズなのに「嫌い」とだけの理由にできるとは...さては...ww
誰ともわからないハズなのに「嫌い」とだけの理由にできるとは...さては...ww
183デフォルトの名無しさん
2019/04/08(月) 18:45:02.15ID:3hZl3Wdo はいはい。話戻すぜ。
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由
^^^^^^^^^^^^^^^^^^^^^^
manに書いてあるそーです。やつのたわごとを信じる人は
(ネットじゃなくて)manの中から探してみてください。
信じない or 信じたけど裏切られたら、
ここにmanの場所が書かれることはないでしょう(予言)
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由
^^^^^^^^^^^^^^^^^^^^^^
manに書いてあるそーです。やつのたわごとを信じる人は
(ネットじゃなくて)manの中から探してみてください。
信じない or 信じたけど裏切られたら、
ここにmanの場所が書かれることはないでしょう(予言)
184デフォルトの名無しさん
2019/04/08(月) 18:46:10.94ID:6GvfotlI ・やっぱり、探せない
か... うん、なんかよかったww
じゃ、がんばれよ
か... うん、なんかよかったww
じゃ、がんばれよ
185デフォルトの名無しさん
2019/04/08(月) 18:50:10.35ID:3hZl3Wdo186デフォルトの名無しさん
2019/04/08(月) 18:56:04.68ID:6GvfotlI ほんと「読めないのな」。よかったはそういう意味じゃない
わざとかと思えなくもないけど、いままでの「読めなさ」からはわざとではないとしか思えない
どう見ても、お前の都合のよいことだな、さすがだよ
場所のレスもらえればお前がいままで知りたかったことがわかり、黙って逃げるだけw(そこにお前の苦悩とかなさげ)
もらえなかったら、お前の中では自己肯定の補強にになるだけとういう。間違いでもな
しょうがないな、1ヶ月後に教えてやるよw何もなかったら1ヶ月後に、この話題はw
わざとかと思えなくもないけど、いままでの「読めなさ」からはわざとではないとしか思えない
どう見ても、お前の都合のよいことだな、さすがだよ
場所のレスもらえればお前がいままで知りたかったことがわかり、黙って逃げるだけw(そこにお前の苦悩とかなさげ)
もらえなかったら、お前の中では自己肯定の補強にになるだけとういう。間違いでもな
しょうがないな、1ヶ月後に教えてやるよw何もなかったら1ヶ月後に、この話題はw
187デフォルトの名無しさん
2019/04/08(月) 19:02:14.14ID:3hZl3Wdo なんなら一年後でいいんやで?w
188デフォルトの名無しさん
2019/04/08(月) 19:09:11.60ID:6GvfotlI イミフ。下衆い意味で言っていそうではあるがwじゃ、適当な時にな
189デフォルトの名無しさん
2019/04/08(月) 19:20:16.01ID:3hZl3Wdo それまで別の話題でお会いしましょう(笑)
あ、他の人、manにないのは明らかなんで探さなくていいですよ〜w
時間の無駄でしょうし。
あ、他の人、manにないのは明らかなんで探さなくていいですよ〜w
時間の無駄でしょうし。
190デフォルトの名無しさん
2019/04/08(月) 19:24:11.57ID:3hZl3Wdo __ - ____ ________ - ___
191デフォルトの名無しさん
2019/04/08(月) 21:48:40.20ID:9U0C5XME >>136
bashがそういう仕様にした理由は, shにあわせたからです.
shがそういう動作をする理由は, expand()が0をかえしたときはもとの引数文字列でmakearg()するようにつくられているからです. おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.
bashがそういう仕様にした理由は, shにあわせたからです.
shがそういう動作をする理由は, expand()が0をかえしたときはもとの引数文字列でmakearg()するようにつくられているからです. おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.
192デフォルトの名無しさん
2019/04/08(月) 22:28:59.33ID:Ejuihx1D ようやくまともなレスがw
>>191
その動き(expandやmakearg)はソースコードから?
補足しておくと俺は「"bashは"なぜそうしたのか?」とは
聞いてなくて、シェルスクリプト(元をたどればsh?)が
どうしてそういう動作をするのかの理由を聞いてる。
で、それは特に理由はないのかな?たまたま最初の実装した人が
あまり考えず、そうしましたぐらいの理由で。
だから理由を探しても見つからないと
>>191
その動き(expandやmakearg)はソースコードから?
補足しておくと俺は「"bashは"なぜそうしたのか?」とは
聞いてなくて、シェルスクリプト(元をたどればsh?)が
どうしてそういう動作をするのかの理由を聞いてる。
で、それは特に理由はないのかな?たまたま最初の実装した人が
あまり考えず、そうしましたぐらいの理由で。
だから理由を探しても見つからないと
193デフォルトの名無しさん
2019/04/08(月) 22:36:01.12ID:Ejuihx1D まとめ
for i in *.txt; do
echo "$i"
done
何もファイルがないディレクトリで↑を実行すると
「*.txt」 というファイルが見つかったかのような動きをします。
「*.txt」というファイルだけがあるディレクトリで実行すると
全く同じように「*.txt」 というファイル名が表示されます。
つまり空ディレクトリでも「*.txt」というファイルがあっても
表示結果が全く同じになります。これは驚き最小の原則に反しています。
for i in *.txt; do
echo "$i"
done
何もファイルがないディレクトリで↑を実行すると
「*.txt」 というファイルが見つかったかのような動きをします。
「*.txt」というファイルだけがあるディレクトリで実行すると
全く同じように「*.txt」 というファイル名が表示されます。
つまり空ディレクトリでも「*.txt」というファイルがあっても
表示結果が全く同じになります。これは驚き最小の原則に反しています。
194デフォルトの名無しさん
2019/04/08(月) 22:57:42.88ID:b/SlAWxT195デフォルトの名無しさん
2019/04/08(月) 23:22:25.12ID:Ih2qq+NP の、POSIXのところは
http://pubs.opengroup.org/onlinepubs/009695299/functions/glob.html
GLOB_NOCHECK
かな?オプション名が意図不明だが説明文からは
http://pubs.opengroup.org/onlinepubs/009695299/functions/glob.html
GLOB_NOCHECK
かな?オプション名が意図不明だが説明文からは
196デフォルトの名無しさん
2019/04/08(月) 23:37:03.41ID:8H4AhNTa >>194
これを読んでも同じ結論になるわけだけど
> 先に与えた、わかりやすく簡単なルール、 「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、
> オリジナルの UNIX における定義であった。 これはパターンが空のリストに展開されることも許可されていた。 例えば
略
> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。
なぜ、わかり易く簡単なルールを捨てて、POSIXでは「そのまま変更されずに残されることになっている。 」を
選んだのかが書かれてないんだよね。
これを読んでも同じ結論になるわけだけど
> 先に与えた、わかりやすく簡単なルール、 「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、
> オリジナルの UNIX における定義であった。 これはパターンが空のリストに展開されることも許可されていた。 例えば
略
> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。
なぜ、わかり易く簡単なルールを捨てて、POSIXでは「そのまま変更されずに残されることになっている。 」を
選んだのかが書かれてないんだよね。
197デフォルトの名無しさん
2019/04/08(月) 23:45:50.70ID:Ih2qq+NP ・探せたが、読めなくて文句つける
か... 探してじゃなくてっぽいけどw
書いてあることが。読めれば」>>152もわかるだろうに。どういう意味で言ったかわからん最小の原則wとかやらにあっているだろう
まあ、単に「認めたくない」だけだろな
何か他にファイルなどがあるとこで、*.hogeなんてファイルがなかったとしよう、
ls *.hoge
でどう動くのが望ましい?この例「だけ」に噛み付くのじゃなく、ちゃんと頭を使って考えような
か... 探してじゃなくてっぽいけどw
書いてあることが。読めれば」>>152もわかるだろうに。どういう意味で言ったかわからん最小の原則wとかやらにあっているだろう
まあ、単に「認めたくない」だけだろな
何か他にファイルなどがあるとこで、*.hogeなんてファイルがなかったとしよう、
ls *.hoge
でどう動くのが望ましい?この例「だけ」に噛み付くのじゃなく、ちゃんと頭を使って考えような
198デフォルトの名無しさん
2019/04/08(月) 23:50:01.35ID:8H4AhNTa199デフォルトの名無しさん
2019/04/08(月) 23:52:32.47ID:8H4AhNTa >>197
ついでだから、ファイルが見つからない時
for i in *.txt; do
echo "$i"
done
はどう動くのが望ましいか書いてくれよ。
今の動きや仕様を書くんじゃなくて
どう動くのが望ましいかをね
ついでだから、ファイルが見つからない時
for i in *.txt; do
echo "$i"
done
はどう動くのが望ましいか書いてくれよ。
今の動きや仕様を書くんじゃなくて
どう動くのが望ましいかをね
200デフォルトの名無しさん
2019/04/08(月) 23:53:17.08ID:Ih2qq+NP ほんとに脊髄だけで、頭使わないのな
POSIXはシェルスクリプトだけを考えてるわけではないのだよ
ls *.a *.c *.c
で、どれかがあってどれかが無い場合の動作は?よくそれで頭使ってる風に言えるもんだ。
POSIXはシェルスクリプトだけを考えてるわけではないのだよ
ls *.a *.c *.c
で、どれかがあってどれかが無い場合の動作は?よくそれで頭使ってる風に言えるもんだ。
201デフォルトの名無しさん
2019/04/08(月) 23:54:01.05ID:8H4AhNTa202デフォルトの名無しさん
2019/04/08(月) 23:54:41.62ID:QfzJZ21c Ruby のglob を使った方が、バグらないので良い!
203デフォルトの名無しさん
2019/04/08(月) 23:55:27.24ID:8H4AhNTa 空のディレクトリで実行するとこうなるのかw
$ ls *.a *.c *.c
ls: '*.a' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません
$ ls *.a *.c *.c
ls: '*.a' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません
204デフォルトの名無しさん
2019/04/08(月) 23:58:38.45ID:8H4AhNTa 多分あいつは、
> この例「だけ」
のことしか考えてない予感がするなw
> この例「だけ」
のことしか考えてない予感がするなw
205デフォルトの名無しさん
2019/04/09(火) 00:00:36.62ID:cRtn1aSe >>202
そうだね。ファイルが見つからないときは
ちゃんと空のリストを返してくれる。
シェルスクリプトのように、「*」を返すことはないね。
irb(main):001:0> Dir.glob('*')
=> []
そうだね。ファイルが見つからないときは
ちゃんと空のリストを返してくれる。
シェルスクリプトのように、「*」を返すことはないね。
irb(main):001:0> Dir.glob('*')
=> []
206デフォルトの名無しさん
2019/04/09(火) 00:01:15.03ID:cRtn1aSe ID変わったけど、俺が ID:8H4AhNTa な
207デフォルトの名無しさん
2019/04/09(火) 00:01:53.02ID:b0dEtQwc まだ、ゴネてる。自分の思ったようにならないってだけでよくそれだけ粘れるな
POSIXの仕様に意味があるのはさんざん言った。お前が認めたくないなんて知ったこっちゃない
POSIXの仕様に合わせてそんなのが動くように普通に書けるし、嫌だったらbashのオプションであんたの好きにできるだろうに
>>201
ls: : No such file or directory
ls: : No such file or directory
ls: : No such file or directory
って、出て来るのが望ましいのね
ls: *.a: No such file or directory
ls: *.b: No such file or directory
ls: *.c: No such file or directory
POSIXの人も俺と同じだと思うよw
>>203
イミフ。なにを言いたいの?
なんで、いちいちいちいちいちいち説明教えなきゃならいないねん
POSIXの仕様に意味があるのはさんざん言った。お前が認めたくないなんて知ったこっちゃない
POSIXの仕様に合わせてそんなのが動くように普通に書けるし、嫌だったらbashのオプションであんたの好きにできるだろうに
>>201
ls: : No such file or directory
ls: : No such file or directory
ls: : No such file or directory
って、出て来るのが望ましいのね
ls: *.a: No such file or directory
ls: *.b: No such file or directory
ls: *.c: No such file or directory
POSIXの人も俺と同じだと思うよw
>>203
イミフ。なにを言いたいの?
なんで、いちいちいちいちいちいち説明教えなきゃならいないねん
208デフォルトの名無しさん
2019/04/09(火) 00:12:14.14ID:cRtn1aSe209デフォルトの名無しさん
2019/04/09(火) 00:12:42.47ID:cRtn1aSe >>207
やっぱりlsの例だけしか考えてないようだね
やっぱりlsの例だけしか考えてないようだね
210デフォルトの名無しさん
2019/04/09(火) 00:15:06.05ID:b0dEtQwc その例だけなら、回らないのが望ましいだろな。だが、POSIXはシェルスクリプトだけを考えてるわけではないからしょうがないうちだろな
で?
で?
211デフォルトの名無しさん
2019/04/09(火) 00:16:54.68ID:b0dEtQwc >>209
何を言いたいのかわからんな。どゆこと?まさか「正確」と同じパターンじゃないよな?その気しか思えないので具体的に言って
何を言いたいのかわからんな。どゆこと?まさか「正確」と同じパターンじゃないよな?その気しか思えないので具体的に言って
212デフォルトの名無しさん
2019/04/09(火) 00:18:30.84ID:cRtn1aSe ついでにPHPの場合
$ php -r "print_r(glob('*'));"
Array
(
)
Perlの場合
perl -MData::Dumper -e 'print Dumper [glob "*"]'
$VAR1 = [];
Rubyと同じく、見つからない場合は
デフォルトでは空のリストが帰ってくる。
$ php -r "print_r(glob('*'));"
Array
(
)
Perlの場合
perl -MData::Dumper -e 'print Dumper [glob "*"]'
$VAR1 = [];
Rubyと同じく、見つからない場合は
デフォルトでは空のリストが帰ってくる。
213デフォルトの名無しさん
2019/04/09(火) 00:19:17.64ID:cRtn1aSe >>210
さっきから
> POSIXはシェルスクリプトだけを考えてるわけではないから
を繰り返してるけど、シェルスクリプト以外とは何の話をしてるの?
そして、シェルスクリプト以外ではどうだって言いたいの?
さっきから
> POSIXはシェルスクリプトだけを考えてるわけではないから
を繰り返してるけど、シェルスクリプト以外とは何の話をしてるの?
そして、シェルスクリプト以外ではどうだって言いたいの?
214デフォルトの名無しさん
2019/04/09(火) 00:20:20.88ID:cRtn1aSe215デフォルトの名無しさん
2019/04/09(火) 00:20:53.10ID:b0dEtQwc >>213
マジか...
マジか...
216デフォルトの名無しさん
2019/04/09(火) 00:21:12.57ID:cRtn1aSe >>215
逃げるなよ
逃げるなよ
217デフォルトの名無しさん
2019/04/09(火) 00:24:19.08ID:b0dEtQwc >>214
ああ、なんだ「シェルスクリプト」の(それも特定な)場合か。「ls」なんて言ってるから他のコマンドとかと思ったぞ
POSIXはシェルスクリプトだけを考えてるわけではないからw
話にならない、POSIXを勉強して出直してね
ああ、なんだ「シェルスクリプト」の(それも特定な)場合か。「ls」なんて言ってるから他のコマンドとかと思ったぞ
POSIXはシェルスクリプトだけを考えてるわけではないからw
話にならない、POSIXを勉強して出直してね
218デフォルトの名無しさん
2019/04/09(火) 00:24:33.50ID:cRtn1aSe C言語めんどくせーなーと思ったら、サクッとソースコード見つかった。
https://qiita.com/sassy_watson/items/03c16bd03b56e5579477
↑のコードの ./*.txt を * に変換したけど、
やはり、空のディレクトリで * と表示されることはなく
何も表示されなかった。
POSIXってほんと何を言いたいんだろう?
https://qiita.com/sassy_watson/items/03c16bd03b56e5579477
↑のコードの ./*.txt を * に変換したけど、
やはり、空のディレクトリで * と表示されることはなく
何も表示されなかった。
POSIXってほんと何を言いたいんだろう?
219デフォルトの名無しさん
2019/04/09(火) 00:25:50.97ID:b0dEtQwc220デフォルトの名無しさん
2019/04/09(火) 00:26:21.07ID:cRtn1aSe POSIXはシェルスクリプトだけを〜とか、じゃあC言語のことなんですかねぇ
でもC言語でも空のディレクトリで * が返ってくることはないし
ほんと何が言いたいんだかw
でもC言語でも空のディレクトリで * が返ってくることはないし
ほんと何が言いたいんだかw
221デフォルトの名無しさん
2019/04/09(火) 00:27:47.89ID:cRtn1aSe POSIXはシェルスクリプトだけを考えてるわけではないから
→ Ruby・・・空の配列を返す
→ Perl・・・空の配列を返す
→ PHP・・・空の配列を返す
→ C言語・・・空の配列を返す
シェルスクリプト以外は空の配列を返します。
→ Ruby・・・空の配列を返す
→ Perl・・・空の配列を返す
→ PHP・・・空の配列を返す
→ C言語・・・空の配列を返す
シェルスクリプト以外は空の配列を返します。
222デフォルトの名無しさん
2019/04/09(火) 00:28:27.37ID:b0dEtQwc223デフォルトの名無しさん
2019/04/09(火) 00:29:23.15ID:b0dEtQwc 以後、脊髄反射マンと呼ぶからなw
224デフォルトの名無しさん
2019/04/09(火) 00:29:27.03ID:cRtn1aSe >>222
またそれか。よく読んでも、そうした理由は書いてない。
またそれか。よく読んでも、そうした理由は書いてない。
225デフォルトの名無しさん
2019/04/09(火) 00:29:47.10ID:cRtn1aSe >>223
脊髄反射マン必死だなw
脊髄反射マン必死だなw
226デフォルトの名無しさん
2019/04/09(火) 00:31:21.79ID:b0dEtQwc Supports rule 3 in the Shell and Utilities volume of IEEE Std 1003.1-2001, Section 2.13.3, Patterns Used for Filename Expansion.
227デフォルトの名無しさん
2019/04/09(火) 00:32:12.65ID:b0dEtQwc >>225
モロ体現してありがたい。オモロイなあんたは
モロ体現してありがたい。オモロイなあんたは
228デフォルトの名無しさん
2019/04/09(火) 00:32:37.61ID:cRtn1aSe229デフォルトの名無しさん
2019/04/09(火) 00:34:36.17ID:b0dEtQwc >>228
言っているけど。「読めれば」そう書いてあるんだけどな。「読めない読めない」言われてもしょうがない
あんただって、「空」だったらマズいときもあるって認めてるやん
本当にただただ「認めたくない」だけなんだな。その「コロ」っとあんたの原点に戻るあたり
まあ、がんばりや
言っているけど。「読めれば」そう書いてあるんだけどな。「読めない読めない」言われてもしょうがない
あんただって、「空」だったらマズいときもあるって認めてるやん
本当にただただ「認めたくない」だけなんだな。その「コロ」っとあんたの原点に戻るあたり
まあ、がんばりや
230デフォルトの名無しさん
2019/04/09(火) 00:35:06.66ID:cRtn1aSe そして面白いのが、シェルスクリプトは glob で見つからない場合に
検索パターンを返すのに対して、シェルスクリプト以外では
見つからない場合に、空のリストを返すって所だな。
検索パターンを返すのに対して、シェルスクリプト以外では
見つからない場合に、空のリストを返すって所だな。
231デフォルトの名無しさん
2019/04/09(火) 00:37:41.48ID:cRtn1aSe >>229
お前、マズイときもあるし、マズくない時もあるって
自分で認めてるやんw
ということはお前の主張は、所詮マズイときの例でしかなく
マズくない時には当てはまらないってことになるんだぞ
わかってるのか?お前の主張が崩れてるの
で、シェルスクリプト以外は空のリストを返しているのに
シェルスクリプトだけは、見つからなかった時に * という
文字列を返すという仕様にした理由は?
お前、マズイときもあるし、マズくない時もあるって
自分で認めてるやんw
ということはお前の主張は、所詮マズイときの例でしかなく
マズくない時には当てはまらないってことになるんだぞ
わかってるのか?お前の主張が崩れてるの
で、シェルスクリプト以外は空のリストを返しているのに
シェルスクリプトだけは、見つからなかった時に * という
文字列を返すという仕様にした理由は?
232デフォルトの名無しさん
2019/04/09(火) 00:39:30.00ID:cRtn1aSe 結局、一番マトモな理由は >>191が書いた
> おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.
これだけなんだよな。特に理由はない。
(深く考えずに)そうしてしまった。
もちろん、正式なドキュメントとして
この理由が、書かれている文書は見つかってないがね。
> おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.
これだけなんだよな。特に理由はない。
(深く考えずに)そうしてしまった。
もちろん、正式なドキュメントとして
この理由が、書かれている文書は見つかってないがね。
233デフォルトの名無しさん
2019/04/09(火) 00:42:08.93ID:cRtn1aSe あ、みなさん。もし ID:b0dEtQwc を擁護したい人がいるならば
ID:b0dEtQwc が示したドキュメントの中から、
「そういう仕様にした"理由"」を書いてある所を指摘して構わないんですよ?
ないでしょう? 誰も指摘しないもんね。それが証拠だよ。
ID:b0dEtQwc が示したドキュメントの中から、
「そういう仕様にした"理由"」を書いてある所を指摘して構わないんですよ?
ないでしょう? 誰も指摘しないもんね。それが証拠だよ。
234デフォルトの名無しさん
2019/04/09(火) 00:42:13.89ID:b0dEtQwc 何言っているの?
>この仕様、なにか便利なの?
が、お前の原点だろ?それ以後「認めなたくない」のであーだこーだ言っているだけだな
>この仕様、なにか便利なの?
が、お前の原点だろ?それ以後「認めなたくない」のであーだこーだ言っているだけだな
235デフォルトの名無しさん
2019/04/09(火) 00:43:58.23ID:b0dEtQwc とうとう誰とも言えない人に頼るようになったか...ww
236デフォルトの名無しさん
2019/04/09(火) 00:46:08.72ID:cRtn1aSe237デフォルトの名無しさん
2019/04/09(火) 00:50:22.73ID:b0dEtQwc >>236
流れというかレスを読めないあんたに言われたくないw
いや、原点の話でしかないな。あんたの都合に(それもあんたの都合の良いようになだけな)合わせる必要性はこれっぽちもないな
とりあえず、原点の問題は解消した&マズい場合もあるそれが理由ってことも解消したってことで、おしまい
流れというかレスを読めないあんたに言われたくないw
いや、原点の話でしかないな。あんたの都合に(それもあんたの都合の良いようになだけな)合わせる必要性はこれっぽちもないな
とりあえず、原点の問題は解消した&マズい場合もあるそれが理由ってことも解消したってことで、おしまい
238デフォルトの名無しさん
2019/04/09(火) 00:51:41.47ID:cRtn1aSe https://linuxjm.osdn.jp/html/LDP_man-pages/man7/glob.7.html
> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。
> bash では、次のコマンドで昔からの振る舞いに設定することができる。
>
> shopt -s nullglob
なぜ昔からの振る舞いから替えたのか?その理由が謎
(理由を明確に述べているドキュメントがない)
> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。
> bash では、次のコマンドで昔からの振る舞いに設定することができる。
>
> shopt -s nullglob
なぜ昔からの振る舞いから替えたのか?その理由が謎
(理由を明確に述べているドキュメントがない)
239デフォルトの名無しさん
2019/04/09(火) 00:52:47.78ID:cRtn1aSe240デフォルトの名無しさん
2019/04/09(火) 00:54:45.59ID:cRtn1aSe > POSIXはシェルスクリプトだけを考えてるわけではないから
↑これも結局何が言いたいのか不明だったな
まあ、何も考えずに(調べずに)シェルスクリプト以外の言語でも
* を返してるはずだって思い込んだんだろうなw
(実際には見つからない場合は空のリストを返します。)
↑これも結局何が言いたいのか不明だったな
まあ、何も考えずに(調べずに)シェルスクリプト以外の言語でも
* を返してるはずだって思い込んだんだろうなw
(実際には見つからない場合は空のリストを返します。)
241デフォルトの名無しさん
2019/04/09(火) 01:01:34.97ID:b0dEtQwc242デフォルトの名無しさん
2019/04/09(火) 01:09:06.87ID:cRtn1aSe > POSIXはシェルスクリプトだけを考えてるわけではないから
↑これで何が言いたいのかを書けば済む話
それが出来ないのはなぜだろうw
↑これで何が言いたいのかを書けば済む話
それが出来ないのはなぜだろうw
243デフォルトの名無しさん
2019/04/09(火) 01:09:51.04ID:cRtn1aSe あ、ちなみに「注目すべきとこ」には何も書いてませんよ。
いつもどおりです。
いつもどおりです。
244デフォルトの名無しさん
2019/04/09(火) 01:15:27.47ID:b0dEtQwc ほんとーーにっ、「読めない」のな、この脊髄反射マンっw
245デフォルトの名無しさん
2019/04/09(火) 01:16:58.07ID:cRtn1aSe 読めないって言わずに、具体的に引用すればいいだけなのに
それをしないのは、結局引用する場所がないからなんだよね
それをしないのは、結局引用する場所がないからなんだよね
246デフォルトの名無しさん
2019/04/09(火) 01:23:40.88ID:b0dEtQwc 「無い」から「引用できない」に変わったけど、同じパターンやな。そして前言はなかったことにという前々からの同じパターン
247デフォルトの名無しさん
2019/04/09(火) 01:25:22.47ID:cRtn1aSe >>246はとりあえずレスしてみましたってだけで
中身がなにもないことに、皆さん気づきましたか?
中身がなにもないことに、皆さん気づきましたか?
248デフォルトの名無しさん
2019/04/09(火) 01:26:56.18ID:b0dEtQwc なんか少しは自分を見直すとかあって、ここでもこんなクソ(俺のも含めて)なレスの応酬もなく、見てためになる万人が楽しめるレス、Q&Aになるかと思ったが、無理かやっぱ(偉そう偉そう)
そりゃ無理かっ。なんか急に飽きた、じゃな
そりゃ無理かっ。なんか急に飽きた、じゃな
249デフォルトの名無しさん
2019/04/09(火) 01:29:05.84ID:cRtn1aSe はい、コイツは何度目かの逃亡宣言です。
また懲りずに来ますよw
また懲りずに来ますよw
250デフォルトの名無しさん
2019/04/10(水) 08:51:10.36ID:1CG1Z7Gt bashの算術計算で小数を使う方法ってないです?
+=で加算したいんですが
+=で加算したいんですが
251デフォルトの名無しさん
2019/04/10(水) 12:14:47.90ID:sSiaigIF >>250
それ俺も欲しいんだよね。
前にやった実装は、小数点以下2位固定だったから
1.23 を 123 にして計算してから、後ろ2桁の間にドットを入れて対応したけど
小数点以下の桁数が1.2とか1.234とかだったら面倒なんだよね。
bcコマンドとか呼び出せば簡単なんだが。
それ俺も欲しいんだよね。
前にやった実装は、小数点以下2位固定だったから
1.23 を 123 にして計算してから、後ろ2桁の間にドットを入れて対応したけど
小数点以下の桁数が1.2とか1.234とかだったら面倒なんだよね。
bcコマンドとか呼び出せば簡単なんだが。
252デフォルトの名無しさん
2019/04/11(木) 17:03:23.97ID:bMTFn+JP exec 3>&1; exec >&-; exec >&3
たまにこんなのを見ますがこれはどんな時に使うんです?
ファイルディスクリプタ自体は理解しましたがfdの複製や切り替える目的が分からなくて
cmd 2>err.txtは意識せず使えてますが
たまにこんなのを見ますがこれはどんな時に使うんです?
ファイルディスクリプタ自体は理解しましたがfdの複製や切り替える目的が分からなくて
cmd 2>err.txtは意識せず使えてますが
253デフォルトの名無しさん
2019/04/11(木) 17:46:50.14ID:cVfQRf/N >>252
不勉強なんで「3」ってfdは知らないんだけど、「>&」ってリダイレクトを
使うと書き込みじゃなくて切替になるんだけど、これを使うとエラー
出力を標準出力に切り替えて標準出力で両方の出力を得たりする
ことができるです
「Command > FileName 2>&1」ってするとエラー出力の内容が標準
出力になってFileNameに両方の内容が書き込まれる
逆に「Command 2> FileName 1>&2」ってすると標準出力がエラー
出力になっるので、エラー出力でFileNameに書き込むことが出来る
で、何に使うのかっていうと、「grep」なんかは検索結果は標準出力に
でるけど「指定されたのはディレクトリだよ」みたいなメッセージは
エラー出力に出される
両方の出力をみて処理したいとかの時にはこれで切り替えて標準
出力の内容を変数に保存しておいて処理するとかに使うです
例が雑でわかりにくいかもだけど、エラーと通常の出力を同じ出力で
使う方法ってことで、あとはスクリプトなんでアイデアしだいなんで
不勉強なんで「3」ってfdは知らないんだけど、「>&」ってリダイレクトを
使うと書き込みじゃなくて切替になるんだけど、これを使うとエラー
出力を標準出力に切り替えて標準出力で両方の出力を得たりする
ことができるです
「Command > FileName 2>&1」ってするとエラー出力の内容が標準
出力になってFileNameに両方の内容が書き込まれる
逆に「Command 2> FileName 1>&2」ってすると標準出力がエラー
出力になっるので、エラー出力でFileNameに書き込むことが出来る
で、何に使うのかっていうと、「grep」なんかは検索結果は標準出力に
でるけど「指定されたのはディレクトリだよ」みたいなメッセージは
エラー出力に出される
両方の出力をみて処理したいとかの時にはこれで切り替えて標準
出力の内容を変数に保存しておいて処理するとかに使うです
例が雑でわかりにくいかもだけど、エラーと通常の出力を同じ出力で
使う方法ってことで、あとはスクリプトなんでアイデアしだいなんで
254デフォルトの名無しさん
2019/04/11(木) 23:20:48.83ID:smzX9gsy255デフォルトの名無しさん
2019/04/12(金) 00:07:43.92ID:XpqpR76r >>252 はリダイレクトを知りたいんじゃなくて、fd=1 を 3 にコピーして 1 をクローズして再度 3 から 1 にコピーする意味
が何なのかを質問しているんだと思う。
結局もとのファイルに繋ぎなおすだけだよね。
一旦クローズするから flush されるとか?ならわかるんだが、実際どうなのかわからん。
が何なのかを質問しているんだと思う。
結局もとのファイルに繋ぎなおすだけだよね。
一旦クローズするから flush されるとか?ならわかるんだが、実際どうなのかわからん。
256デフォルトの名無しさん
2019/04/12(金) 00:45:21.11ID:L59U/aC1 ファイルディスクリプタに関しては
逆引き辞書が必要なんだと思う
○○をしたい時 → こうします。っていうやつ
逆引き辞書が必要なんだと思う
○○をしたい時 → こうします。っていうやつ
257デフォルトの名無しさん
2019/04/12(金) 03:08:23.09ID:WO5SLys3 ファイルディスクリプタ(FD) 3番からは、システムが使うけど、ユーザーも使うことができる。
FD0 : 標準入力、FD1 : 標準出力、FD2 : 標準エラー出力
端末に、ls と打つと、
1. シェルが、lsコマンドのプロセスを起動して、それに、FD0〜2 を渡す
2. lsプロセスは、FD3 を使って、ファイル一覧を作って、FD1 に出力する
主なFD3 の使用方法は、標準入力を、ファイル・キーボードの2つで、切り替えて使いたい時
標準入力をファイルからにすると、キーボード入力が出来なくなるため、
一旦、標準入力(FD0)をFD3 にして、ファイルから入力して、済んだら元に戻す
こんな事を一々、シェルスクリプトでやるよりも、Ruby でやればよい。
FD何番を使っているとか、意識せずにすむ
FD0 : 標準入力、FD1 : 標準出力、FD2 : 標準エラー出力
端末に、ls と打つと、
1. シェルが、lsコマンドのプロセスを起動して、それに、FD0〜2 を渡す
2. lsプロセスは、FD3 を使って、ファイル一覧を作って、FD1 に出力する
主なFD3 の使用方法は、標準入力を、ファイル・キーボードの2つで、切り替えて使いたい時
標準入力をファイルからにすると、キーボード入力が出来なくなるため、
一旦、標準入力(FD0)をFD3 にして、ファイルから入力して、済んだら元に戻す
こんな事を一々、シェルスクリプトでやるよりも、Ruby でやればよい。
FD何番を使っているとか、意識せずにすむ
258257
2019/04/12(金) 04:14:55.73ID:WO5SLys3 exec 3<&0 < a.txt # FD3 から入力
while read LINE
do
echo "--- ${LINE} ---"
done
exec 0<&3 3<&- # 標準入力を元に戻し、FD3 を閉じる
# 上のようにも書けるが、下の方が、標準入力のファイルディスクリプタ(FD)0 をいじらないので、安全
exec 3< a.txt
while read LINE 0<&3 # FD3 から入力
do
echo "--- ${LINE} ---"
done
exec 3<&- # 閉じる
「UNIX シェルスクリプト・コマンドブック 第2版、山下哲典」の、exec の説明の所に書いてある。
第3版には載っているかどうか、知らないけど
while read LINE
do
echo "--- ${LINE} ---"
done
exec 0<&3 3<&- # 標準入力を元に戻し、FD3 を閉じる
# 上のようにも書けるが、下の方が、標準入力のファイルディスクリプタ(FD)0 をいじらないので、安全
exec 3< a.txt
while read LINE 0<&3 # FD3 から入力
do
echo "--- ${LINE} ---"
done
exec 3<&- # 閉じる
「UNIX シェルスクリプト・コマンドブック 第2版、山下哲典」の、exec の説明の所に書いてある。
第3版には載っているかどうか、知らないけど
259デフォルトの名無しさん
2019/04/12(金) 13:25:25.09ID:L59U/aC1 もう少しまともに説明できるやついないのかな・・・
260デフォルトの名無しさん
2019/04/12(金) 13:27:28.90ID:I415couP 宿題は自分でやろうな
261デフォルトの名無しさん
2019/04/12(金) 16:22:09.16ID:zYICSkfs CTRL+Cのトラップについて教えて
以下のスクリプトの時、実行してすぐにCTRL+Cを押すと
#!/bin/sh
set -e
sigint() { echo sigint; }
trap 'sigint' INT
#trap 'echo $?' EXIT
sleep 10
こんな感じでバラバラなんだけどさ
dash・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
bash・・・トラップできる。終了コード130
zsh・・・トラップできる。終了コード130
ksh・・・トラップできない。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると258と表示される。トラップできず)
mksh・・・トラップできる。終了コード0
(コメントアウトしてるEXITのtrapを有効にすると0と表示される。トラップできる。)
posh・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
yash・・・トラップできる。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると386と表示される。トラップできる。)
なんでこうなって、どれが正しい動きで、どれでも同じ動きさせるには、どうすりゃいいの?
以下のスクリプトの時、実行してすぐにCTRL+Cを押すと
#!/bin/sh
set -e
sigint() { echo sigint; }
trap 'sigint' INT
#trap 'echo $?' EXIT
sleep 10
こんな感じでバラバラなんだけどさ
dash・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
bash・・・トラップできる。終了コード130
zsh・・・トラップできる。終了コード130
ksh・・・トラップできない。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると258と表示される。トラップできず)
mksh・・・トラップできる。終了コード0
(コメントアウトしてるEXITのtrapを有効にすると0と表示される。トラップできる。)
posh・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
yash・・・トラップできる。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると386と表示される。トラップできる。)
なんでこうなって、どれが正しい動きで、どれでも同じ動きさせるには、どうすりゃいいの?
262デフォルトの名無しさん
2019/04/12(金) 16:46:27.11ID:2vVcl4ag 宿題は自分でやろうな
263デフォルトの名無しさん
2019/04/13(土) 06:04:26.25ID:blG/UTRx Ruby では、カスタムハンドラを定義した場合、終了しない。
デフォルトのままなら、Ctrl+C で終了する
つまり、デフォルトハンドラから、カスタムハンドラへ付け替えたため
sleep 7 #=> ここではデフォルトハンドラだから、Ctrl+C で終了する
previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end
print "previous_handler = "
p previous_handler #=> "DEFAULT"
sleep 7 #=> ここでは、カスタムハンドラへ付け替えたので、終了はしない
デフォルトのままなら、Ctrl+C で終了する
つまり、デフォルトハンドラから、カスタムハンドラへ付け替えたため
sleep 7 #=> ここではデフォルトハンドラだから、Ctrl+C で終了する
previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end
print "previous_handler = "
p previous_handler #=> "DEFAULT"
sleep 7 #=> ここでは、カスタムハンドラへ付け替えたので、終了はしない
264デフォルトの名無しさん
2019/04/13(土) 06:40:14.96ID:mImzJn5T それはシェルスクリプトも同じだろうな。上の終了しているのは set -e しているからじゃないのかな
シェルスクリプトは子プロセスを起動していてシグナルを受けるのが子プロセスでが多くタイミング的に〜以下省略
シェルスクリプトは子プロセスを起動していてシグナルを受けるのが子プロセスでが多くタイミング的に〜以下省略
265デフォルトの名無しさん
2019/04/13(土) 07:34:12.37ID:bIdtQ5MW > set -e しているからじゃないのかな
それをわかってるから、サンプルコードにも入れてるんだけどねw
問題はそこじゃなくて、なんでシェル毎に挙動違うんだよ!?
どれが正しいんだよ!?という話なわけで
それをわかってるから、サンプルコードにも入れてるんだけどねw
問題はそこじゃなくて、なんでシェル毎に挙動違うんだよ!?
どれが正しいんだよ!?という話なわけで
266デフォルトの名無しさん
2019/04/13(土) 07:57:58.58ID:i5T2wQ7z CTRL-Cを入力するタイミングが下手すぎるって話だろ
まさか手入力じゃあるまいな?
まさか手入力じゃあるまいな?
267デフォルトの名無しさん
2019/04/13(土) 08:08:06.94ID:bIdtQ5MW >>266
手入力しないでやる方法を教えてくれ!
手入力しないでやる方法を教えてくれ!
268デフォルトの名無しさん
2019/04/13(土) 08:08:38.43ID:bIdtQ5MW いやkill使うのは知ってる。それをどういう風に使えば、
手入力と全く同じことを再現できるのかという話だ。
手入力と全く同じことを再現できるのかという話だ。
269デフォルトの名無しさん
2019/04/13(土) 08:12:44.72ID:bIdtQ5MW 2つの端末を使って一方で実行してから
もう一方で(手入力で)実行するっていうのは
結局手入力してるのと変わらないし、
1つのスクリプトでkillすると、
それこそわけわからんことになる。
イベントハンドラ内でkillするか、違う場所でkillするか
シェルによって挙動が違う
もう一方で(手入力で)実行するっていうのは
結局手入力してるのと変わらないし、
1つのスクリプトでkillすると、
それこそわけわからんことになる。
イベントハンドラ内でkillするか、違う場所でkillするか
シェルによって挙動が違う
270263
2019/04/13(土) 08:51:59.71ID:blG/UTRx Ruby では、
previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end
print "previous_handler = "
p previous_handler #=> "DEFAULT"
# 自プロセスへシグナルを送ると、カスタムハンドラが呼ばれるが、終了はしない
Process.kill :INT, Process.pid
Signal.trap( :INT, previous_handler ) # 元のハンドラへ戻す
sleep 7 #=> ここでは、デフォルトハンドラへ戻したので、Ctrl+C で終了する
「改訂2版 Ruby逆引きハンドブック」では、もっとややこしい記述をしてる
シグナルハンドラはグローバルだから、
他のスレッドに変更されないように、Mutex で排他制御してる
previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end
print "previous_handler = "
p previous_handler #=> "DEFAULT"
# 自プロセスへシグナルを送ると、カスタムハンドラが呼ばれるが、終了はしない
Process.kill :INT, Process.pid
Signal.trap( :INT, previous_handler ) # 元のハンドラへ戻す
sleep 7 #=> ここでは、デフォルトハンドラへ戻したので、Ctrl+C で終了する
「改訂2版 Ruby逆引きハンドブック」では、もっとややこしい記述をしてる
シグナルハンドラはグローバルだから、
他のスレッドに変更されないように、Mutex で排他制御してる
271263
2019/04/13(土) 09:02:30.89ID:blG/UTRx シングルスレッドでは、sleep 7、としてる間に同時に、
Process.kill :INT, Process.pid
と、自プロセスの命令を実行できない
マルチスレッドなら出来るのだろうが、マルチスレッド・プログラミングはややこしい!
Process.kill :INT, Process.pid
と、自プロセスの命令を実行できない
マルチスレッドなら出来るのだろうが、マルチスレッド・プログラミングはややこしい!
272デフォルトの名無しさん
2019/04/13(土) 09:27:42.11ID:bIdtQ5MW273デフォルトの名無しさん
2019/04/13(土) 09:36:25.97ID:bIdtQ5MW zshの謎な挙動はこれが原因か?
https://fumiyas.github.io/2013/12/05/trap-exit.sh-advent-calendar.html
> でました、zsh の非互換! zsh はシグナルハンドラー※内で終了すると、 EXIT ハンドラーを実行してくれません。酷い。 (※この例では SIGINT のデフォルトのシグナルハンドラー)
> こんな感じで bash, ksh, zsh には微妙な動作の違いがあったりするので、 ちょっと変わったことしようとするときは特に注意しましょう。
https://fumiyas.github.io/2013/12/05/trap-exit.sh-advent-calendar.html
> でました、zsh の非互換! zsh はシグナルハンドラー※内で終了すると、 EXIT ハンドラーを実行してくれません。酷い。 (※この例では SIGINT のデフォルトのシグナルハンドラー)
> こんな感じで bash, ksh, zsh には微妙な動作の違いがあったりするので、 ちょっと変わったことしようとするときは特に注意しましょう。
274デフォルトの名無しさん
2019/04/13(土) 09:39:48.45ID:bIdtQ5MW 読みづらいなw
$ zsh -c '
atexit(){ echo "Bye!"; };
trap atexit EXIT;
trap "trap - EXIT; atexit; exit -1" TERM;
kill -TERM $$
'
$ zsh -c '
atexit(){ echo "Bye!"; };
trap atexit EXIT;
trap "trap - EXIT; atexit; exit -1" TERM;
kill -TERM $$
'
275デフォルトの名無しさん
2019/04/13(土) 11:31:16.12ID:6byp94bf 全てのシェルで適切に終了処理をするって難しいな・・・
276263
2019/04/13(土) 11:39:28.75ID:blG/UTRx Ruby で、at_exit に、終了処理を書いておけばよい
シェルスクリプトで、書く必要がない
シェルスクリプトで、書く必要がない
277デフォルトの名無しさん
2019/04/13(土) 11:55:58.29ID:6byp94bf 時たま出来てしまうゾンビは何が原因なんだろう?
kill -TERM 0 してるから全部死んでくれるはずなんだが・・・
kill -TERM 0 してるから全部死んでくれるはずなんだが・・・
278デフォルトの名無しさん
2019/04/13(土) 11:57:21.41ID:6byp94bf あ、バックグラウンド処理とかしてる
そしてCTRL-Cで強制終了した時の話
ゾンビだから消せなくて困る
そしてCTRL-Cで強制終了した時の話
ゾンビだから消せなくて困る
279デフォルトの名無しさん
2019/04/13(土) 13:02:33.69ID:blG/UTRx ゾンビは、子プロセスが終了して、
OS が、その終了コードをどう扱えば良いのか、わからないから、ひとまず保存している状態
普通なら、子プロセスの終了コードは、親プロセスへ渡されるのかな?
ゾンビが生まれた時に、親プロセスがどうなっているのか?
OS が、その終了コードをどう扱えば良いのか、わからないから、ひとまず保存している状態
普通なら、子プロセスの終了コードは、親プロセスへ渡されるのかな?
ゾンビが生まれた時に、親プロセスがどうなっているのか?
280デフォルトの名無しさん
2019/04/13(土) 14:09:25.74ID:mImzJn5T281デフォルトの名無しさん
2019/04/13(土) 14:29:06.39ID:6byp94bf >>279
その理屈はわかるんだけどねぇ
まず必ずゾンビになるんじゃなくてたまになる。だからタイミングの問題
CTRL-Cを押した時になる。通常の処理では発生しない。
CTRL-Cのハンドラでは作業ディレクトリの削除を行っている。
ワーカー(& によるバックグラウンド処理)が複数ある。サブシェルを使ってるせいか
同じな名前のプロセスがたくさんいる。ワーカーを生成した後はwait(引数なし)を実行している。
ゾンビの存在は確認しているが、誰がゾンビになったのかその親が誰かはよくわかっていない。
(たまにしかならんので探しにくい)ただし内部で呼び出してるtrやmvがゾンビになったこともある。
CTRL-Cのハンドラでは作業ディレクトリの削除の他、多数生きてるワーカー(労働者)を
皆殺しにするためにジェノサイド(kill -TERM 0)を発動している。
ただし労働者を消した後に、労働者の作業場(作業ディレクトリ)も片付ける
必要があるので自分だけは死なないようにしている。(trap ':' TERM)
実際にはもっと複雑だけど、死なないのは自分だけなはずなんだけどな
バグでゾンビになったこともあるので記憶が曖昧だけど
(バグを修正した今は)zshだけしか発生しなくなっているかもしれない。
もしかしたらzsh内蔵のkillにバグがあって殺す順番とか
子供が生まれるタイミングで発生してるとか?
でもまあなんだかんだでシンプルにしていったら
ゾンビの発生率も下がってきたし諦めるかな
その理屈はわかるんだけどねぇ
まず必ずゾンビになるんじゃなくてたまになる。だからタイミングの問題
CTRL-Cを押した時になる。通常の処理では発生しない。
CTRL-Cのハンドラでは作業ディレクトリの削除を行っている。
ワーカー(& によるバックグラウンド処理)が複数ある。サブシェルを使ってるせいか
同じな名前のプロセスがたくさんいる。ワーカーを生成した後はwait(引数なし)を実行している。
ゾンビの存在は確認しているが、誰がゾンビになったのかその親が誰かはよくわかっていない。
(たまにしかならんので探しにくい)ただし内部で呼び出してるtrやmvがゾンビになったこともある。
CTRL-Cのハンドラでは作業ディレクトリの削除の他、多数生きてるワーカー(労働者)を
皆殺しにするためにジェノサイド(kill -TERM 0)を発動している。
ただし労働者を消した後に、労働者の作業場(作業ディレクトリ)も片付ける
必要があるので自分だけは死なないようにしている。(trap ':' TERM)
実際にはもっと複雑だけど、死なないのは自分だけなはずなんだけどな
バグでゾンビになったこともあるので記憶が曖昧だけど
(バグを修正した今は)zshだけしか発生しなくなっているかもしれない。
もしかしたらzsh内蔵のkillにバグがあって殺す順番とか
子供が生まれるタイミングで発生してるとか?
でもまあなんだかんだでシンプルにしていったら
ゾンビの発生率も下がってきたし諦めるかな
282デフォルトの名無しさん
2019/04/13(土) 14:40:48.63ID:6byp94bf うーん、おかしい。trってワーカー(バックグラウンドプロセス)の
中で使っているとはいえ、パイプの右側でしか使ってないんだが?
中で使っているとはいえ、パイプの右側でしか使ってないんだが?
283279
2019/04/13(土) 15:17:27.06ID:blG/UTRx 漏れにも、ゾンビになるプログラムとならないプログラムの、違いがわからない
ゾンビになるメカニズムを検索してみれば?
ゾンビになるメカニズムを検索してみれば?
284デフォルトの名無しさん
2019/04/13(土) 15:21:25.04ID:6byp94bf 「ゾンビになるメカニズム」で検索してみた
管理テーブルにデータが残ってるだけなら
消す方法(もしくは隠す方法)があってもいいと思うんだがねぇ
管理テーブルにデータが残ってるだけなら
消す方法(もしくは隠す方法)があってもいいと思うんだがねぇ
285デフォルトの名無しさん
2019/04/13(土) 16:27:29.48ID:i5T2wQ7z286デフォルトの名無しさん
2019/04/13(土) 16:33:30.75ID:mImzJn5T >>280
>コマンドがINTシグナルで終了した場合、シェルが擬似的にシグナルハンドラ呼んでるっぽいかな(もしくは自らにINTシグナル出してるのかな
違うか。control-cでのINTシグナル送るやつの文献ってどこぞにあるかなあ
>コマンドがINTシグナルで終了した場合、シェルが擬似的にシグナルハンドラ呼んでるっぽいかな(もしくは自らにINTシグナル出してるのかな
違うか。control-cでのINTシグナル送るやつの文献ってどこぞにあるかなあ
287279
2019/04/13(土) 17:05:08.41ID:blG/UTRx Ctrl+C が、子プロセスやパイプラインのジョブグループに、
どのように伝達されていくかとか、難しい
どのように伝達されていくかとか、難しい
288デフォルトの名無しさん
2019/04/13(土) 17:21:22.57ID:6byp94bf いろいろ間違っていた。訂正する。
まずCTRL-Cは関係なさそう。実は正常な動作でも(プログラム実行中に)ゾンビができることがあった。
ゾンビができると今は無限ループ状態になるので気づいたが、ちょっと前まではプログラムの構造上、
ゾンビを放置して正常終了していたと思う。zshではあまりテストしていなかったから気づかなかった。
バックグラウンドプロセスが関係あるかないかはよくわからない。
何回か動かしているがバックグラウンドプロセスを使用しない場合は今の所再現していない。
あとなんかWSLとのからみな気がしてきた。
速度が違うから断定は出来ないがLinuxだと再現しない。
今の所、WSL環境にて、zshで、バックグラウンドプロセスを使用し、
その中でパイプを使った処理を行うと、まれにゾンビプロセスができる。
まずCTRL-Cは関係なさそう。実は正常な動作でも(プログラム実行中に)ゾンビができることがあった。
ゾンビができると今は無限ループ状態になるので気づいたが、ちょっと前まではプログラムの構造上、
ゾンビを放置して正常終了していたと思う。zshではあまりテストしていなかったから気づかなかった。
バックグラウンドプロセスが関係あるかないかはよくわからない。
何回か動かしているがバックグラウンドプロセスを使用しない場合は今の所再現していない。
あとなんかWSLとのからみな気がしてきた。
速度が違うから断定は出来ないがLinuxだと再現しない。
今の所、WSL環境にて、zshで、バックグラウンドプロセスを使用し、
その中でパイプを使った処理を行うと、まれにゾンビプロセスができる。
289デフォルトの名無しさん
2019/04/13(土) 17:27:02.88ID:i5T2wQ7z290デフォルトの名無しさん
2019/04/13(土) 17:36:42.95ID:mImzJn5T291デフォルトの名無しさん
2019/04/13(土) 17:43:50.87ID:6byp94bf 再現コード出来た。このコード、なにか問題有る?
これをWSL+ZSHで実行すると、人目につかず永遠とbcコマンドで1+1を計算し続け、
CTRL-Cで停止するときにbcコマンド含めたプロセスグループ全体をkillする(はず)
これをやるとbcコマンドがゾンビ化する。(Linuxだとしない)
#!/usr/bin/zsh
int() {
echo kill
kill -TERM 0
echo killed
exit 1
}
trap 'int' INT
trap ':' TERM
worker() {
while :; do
echo '1+1' | bc > /dev/null
done
}
for i in $(seq 16); do
worker &
done
echo wait
wait
これをWSL+ZSHで実行すると、人目につかず永遠とbcコマンドで1+1を計算し続け、
CTRL-Cで停止するときにbcコマンド含めたプロセスグループ全体をkillする(はず)
これをやるとbcコマンドがゾンビ化する。(Linuxだとしない)
#!/usr/bin/zsh
int() {
echo kill
kill -TERM 0
echo killed
exit 1
}
trap 'int' INT
trap ':' TERM
worker() {
while :; do
echo '1+1' | bc > /dev/null
done
}
for i in $(seq 16); do
worker &
done
echo wait
wait
292デフォルトの名無しさん
2019/04/13(土) 17:44:42.87ID:6byp94bf やっぱり詳解Unixは買わねばいかんか・・・
293デフォルトの名無しさん
2019/04/13(土) 17:54:41.69ID:6byp94bf dash、bashでは再現しない。kshでも再現した。
いずれもWSLのみ。これもうWSLの問題だろ・・・
きっとWSLのバグをzshとkshが踏んじゃったんだな
いずれもWSLのみ。これもうWSLの問題だろ・・・
きっとWSLのバグをzshとkshが踏んじゃったんだな
294デフォルトの名無しさん
2019/04/13(土) 17:55:48.18ID:6byp94bf これ関連してるのかな?
Why are there many zombie process in windows subsystem for linux(WSL)? How to kill them totally?
https://superuser.com/questions/1419292/why-are-there-many-zombie-process-in-windows-subsystem-for-linuxwsl-how-to-ki
Why are there many zombie process in windows subsystem for linux(WSL)? How to kill them totally?
https://superuser.com/questions/1419292/why-are-there-many-zombie-process-in-windows-subsystem-for-linuxwsl-how-to-ki
295デフォルトの名無しさん
2019/04/13(土) 18:09:57.29ID:6byp94bf 次のWindows 10のリリースで治ってんじゃないですかねー
もういいか
Zombie zsh processes left behind that consume 8 % CPU each
https://github.com/Microsoft/WSL/issues/3940
Killing a defunct zombie leaks the zombie process forever
https://github.com/Microsoft/WSL/issues/3741
https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-18267
Fix issue where zombie process may not be reaped and remain indefinitely.
もういいか
Zombie zsh processes left behind that consume 8 % CPU each
https://github.com/Microsoft/WSL/issues/3940
Killing a defunct zombie leaks the zombie process forever
https://github.com/Microsoft/WSL/issues/3741
https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-18267
Fix issue where zombie process may not be reaped and remain indefinitely.
296デフォルトの名無しさん
2019/04/14(日) 14:12:09.49ID:uU4FE3J6 read -r text <<HERE
printf [%s]\n it's a "s'm'a'l'l 'w"o'r"l'd"
HERE
$text
↓出力
[it's]
[a]
["s'm'a'l'l]
['w"o'r"l'd"]
この仕様、うまくすればなにかに使えそうな気がしている。
文法エラーにもならずevalとはまた違った挙動だ。
とゆうかどういう仕様なんだろう?
printf [%s]\n it's a "s'm'a'l'l 'w"o'r"l'd"
HERE
$text
↓出力
[it's]
[a]
["s'm'a'l'l]
['w"o'r"l'd"]
この仕様、うまくすればなにかに使えそうな気がしている。
文法エラーにもならずevalとはまた違った挙動だ。
とゆうかどういう仕様なんだろう?
297デフォルトの名無しさん
2019/04/14(日) 17:50:16.12ID:21MN1CXY $ cat b.pl
#!/usr/bin/perl -w
print("$_\n") foreach @ARGV;
$ cat c.sh
#!/bin/bash
IFS=+
./b.pl a b c
./b.pl a+b+c
while read -r v ; do $v ; done <<EOF
./b.pl a b c
./b.pl+a+b+c
EOF
$ ./c.sh
a
b
c
a+b+c
./c.sh: 行 6: ./b.pl a b c: そのようなファイルやディレクトリはありません
a
b
c
$ # うん、なかなか面白いね。どうしてこうなるかは man に書いてあるよ。
$ # 簡単に言うと、単語の分割というのは最初に行われるものと
$ # 変数が展開された後に行われるものがあるんだ。
$
#!/usr/bin/perl -w
print("$_\n") foreach @ARGV;
$ cat c.sh
#!/bin/bash
IFS=+
./b.pl a b c
./b.pl a+b+c
while read -r v ; do $v ; done <<EOF
./b.pl a b c
./b.pl+a+b+c
EOF
$ ./c.sh
a
b
c
a+b+c
./c.sh: 行 6: ./b.pl a b c: そのようなファイルやディレクトリはありません
a
b
c
$ # うん、なかなか面白いね。どうしてこうなるかは man に書いてあるよ。
$ # 簡単に言うと、単語の分割というのは最初に行われるものと
$ # 変数が展開された後に行われるものがあるんだ。
$
298デフォルトの名無しさん
2019/04/15(月) 17:41:03.59ID:ZXb+3x2v シェルスクリプト(対話操作含め)が実行される手順って結構複雑な割に他の言語よりずっと単純だから
理論から実践(この場合はシステム処理とか?)への、かなり良い足掛かりになるよね。
理論から実践(この場合はシステム処理とか?)への、かなり良い足掛かりになるよね。
299デフォルトの名無しさん
2019/04/21(日) 01:20:29.51ID:Has+aDs1 http://www.sample/{01..10}.jpg
これが書かれたtxtを読み込んでブレース展開して出力する方法ないです?
$ printf "%s\n" < foo.txt
適当にこうやっても上手く行かなくて
これが書かれたtxtを読み込んでブレース展開して出力する方法ないです?
$ printf "%s\n" < foo.txt
適当にこうやっても上手く行かなくて
300デフォルトの名無しさん
2019/04/21(日) 01:26:56.31ID:S3Y2FMky ないです
301デフォルトの名無しさん
2019/04/21(日) 01:40:13.99ID:0pnJkrzy eval $(echo -n 'echo '; cat foo.txt) とか?
302デフォルトの名無しさん
2019/04/21(日) 02:15:47.05ID:FhppS/ri sh << END
printf "%s\n" $(cat foo.txt)
END
printf "%s\n" $(cat foo.txt)
END
303デフォルトの名無しさん
2019/04/21(日) 02:24:15.12ID:FhppS/ri echo "printf '%s\n' $(cat foo.txt)" | sh
でよかった
でよかった
304デフォルトの名無しさん
2019/04/21(日) 08:49:56.51ID:Hx8930Ug eval 'echo '$(<foo.txt)
305デフォルトの名無しさん
2019/04/21(日) 10:59:40.33ID:Has+aDs1306デフォルトの名無しさん
2019/04/21(日) 12:47:47.19ID:Hx8930Ug ごめん、もうちょっとシンプルに書けた。
eval echo $(<foo.txt)
eval echo $(<foo.txt)
307デフォルトの名無しさん
2019/04/22(月) 02:03:07.74ID:KyfckjPA308デフォルトの名無しさん
2019/04/22(月) 11:54:54.98ID:c8JzoHXu 例えばさ、
bash -n -c 'a=(a b c)'
↑これはbashとして正しい文法だけどさ
sh -n -c 'a=(a b c)'
↑これは文法エラーになるじゃん? 実行していなくても
これみたいに、実行してないのにあるシェルではOKで
別のシェルではNGみたいな文法って他に何かしらない?
bash -n -c 'a=(a b c)'
↑これはbashとして正しい文法だけどさ
sh -n -c 'a=(a b c)'
↑これは文法エラーになるじゃん? 実行していなくても
これみたいに、実行してないのにあるシェルではOKで
別のシェルではNGみたいな文法って他に何かしらない?
309デフォルトの名無しさん
2019/04/22(月) 12:22:26.76ID:KyfckjPA310デフォルトの名無しさん
2019/04/22(月) 15:47:58.78ID:8XF5nS5J eval 'printf "%s\n" '$(cat foo.txt)
これprintfをシングルクォートで囲まないと改行されないのね
http://www.sample/01.jpgnhttp://www.sample/02.jpgnhみたいな結果ばかりでちょっと悩んだ
zsh使ってないけどこれはforの後の二重括弧に空白が必要だとかなんとか
{には空白がいるのにfor((が通るbashの方が不自然なのか
これprintfをシングルクォートで囲まないと改行されないのね
http://www.sample/01.jpgnhttp://www.sample/02.jpgnhみたいな結果ばかりでちょっと悩んだ
zsh使ってないけどこれはforの後の二重括弧に空白が必要だとかなんとか
{には空白がいるのにfor((が通るbashの方が不自然なのか
311デフォルトの名無しさん
2019/04/22(月) 18:28:36.64ID:i3ajZQCG export -p と export の違いってなに?
312デフォルトの名無しさん
2019/04/22(月) 18:36:38.02ID:oyNQbI7u \n の処理をだれがいつやらかすのかってとこかな。printfにやらせたいprintfに \n のまま渡さなくてはという感じ
eval printf "'%s\n'" $(cat foo.txt)
eval printf '%s\\n' $(cat foo.txt)
eval printf "'%s\n'" $(cat foo.txt)
eval printf '%s\\n' $(cat foo.txt)
313デフォルトの名無しさん
2019/04/22(月) 23:58:52.60ID:htDMK2AO そもそもなぜ eval を使うのかというと、コマンドラインの解釈において
ブレース展開がコマンド置換より前だから
コマンド置換してからブレース展開するためには
eval を使って解釈を最初からやり直す必要があるためで
しかしながら printf と "%s\n" にはその必要がないのだから、つまり
printf "%s\n" $(eval echo $(<foo.txt))
でいいんじゃないかな。
ブレース展開がコマンド置換より前だから
コマンド置換してからブレース展開するためには
eval を使って解釈を最初からやり直す必要があるためで
しかしながら printf と "%s\n" にはその必要がないのだから、つまり
printf "%s\n" $(eval echo $(<foo.txt))
でいいんじゃないかな。
314デフォルトの名無しさん
2019/04/23(火) 08:44:15.00ID:q7kwqzjj ダブルクリックで実行できるのとできないシェルスクリプトの違いって一体
whileとcaseで簡易メニュー作ってたんだけどダブルクリックしても画面に何も出ない上に
起動されたbashがCPUがかなり食ってた
無論端末から実行はしっかり通る
ls結果を外部保存するような単純な奴はダブルクリックでも正常通りなんだけど
whileとcaseで簡易メニュー作ってたんだけどダブルクリックしても画面に何も出ない上に
起動されたbashがCPUがかなり食ってた
無論端末から実行はしっかり通る
ls結果を外部保存するような単純な奴はダブルクリックでも正常通りなんだけど
315デフォルトの名無しさん
2019/04/23(火) 13:31:54.32ID:zhMneqp1 シェルスクリプト関係ない
316デフォルトの名無しさん
2019/04/23(火) 18:19:48.00ID:/EY0Mv6x317デフォルトの名無しさん
2019/04/23(火) 18:22:18.78ID:/EY0Mv6x >>314
使ってるGUIシステムがX11なら
x-terminal-emulatorなんかを使って仮想端末を立ち上げてからじゃないと
メニューみたいな端末出力を必要とするものは期待した通りに動かないよ。
使ってるGUIシステムがX11なら
x-terminal-emulatorなんかを使って仮想端末を立ち上げてからじゃないと
メニューみたいな端末出力を必要とするものは期待した通りに動かないよ。
318デフォルトの名無しさん
2019/04/23(火) 20:23:01.28ID:zVNwrrWL >>316
そうマニュアルに書いてあるだろう。なんのボケ?w
そうマニュアルに書いてあるだろう。なんのボケ?w
319デフォルトの名無しさん
2019/04/23(火) 21:51:37.02ID:zhMneqp1 模範解答
export -p がどう表示されるかはPOSIXで規定されていますが、
export がどう表示されるかは未定義です。(同じとは限りません)
つまり、exportがどうなるかはシェル毎に異なります。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#export
更にexport -pはbashではPOSIXに反してdeclareで表示されます。
これらは各シェルのマニュアルには書いていません。
export -p がどう表示されるかはPOSIXで規定されていますが、
export がどう表示されるかは未定義です。(同じとは限りません)
つまり、exportがどうなるかはシェル毎に異なります。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#export
更にexport -pはbashではPOSIXに反してdeclareで表示されます。
これらは各シェルのマニュアルには書いていません。
320デフォルトの名無しさん
2019/04/23(火) 22:49:27.06ID:/EY0Mv6x 模 範 解 答
321デフォルトの名無しさん
2019/04/24(水) 08:22:12.86ID:6O+4Q2Ek bashで abc*が展開できると出来ないときがあって
それをテストするのに
[ "abc*" = 'abc*' ]
とやりたいのにできません
どうやったらできますか?
それをテストするのに
[ "abc*" = 'abc*' ]
とやりたいのにできません
どうやったらできますか?
322デフォルトの名無しさん
2019/04/24(水) 17:25:06.62ID:bQUFU5ml >>321
何がどうできないのかよく分からないけどシングルクォートとダブルクォートは
処理が違うから「=」にならないと思うよ
シングルクォート側は文字列なので「abc*」っていう文字列になるけど
ダブルクォート側は解釈されるので「*」にあたるものが存在しないと何もない
状態なので「abc」って文字列になるんじゃないかな
何がどうできないのかよく分からないけどシングルクォートとダブルクォートは
処理が違うから「=」にならないと思うよ
シングルクォート側は文字列なので「abc*」っていう文字列になるけど
ダブルクォート側は解釈されるので「*」にあたるものが存在しないと何もない
状態なので「abc」って文字列になるんじゃないかな
323デフォルトの名無しさん
2019/04/24(水) 17:40:21.19ID:uakSx5ac は?
324デフォルトの名無しさん
2019/04/24(水) 17:42:31.98ID:6O+4Q2Ek abc*が展開できない時はそのままabc*になるのでそう思って書いてみました
325デフォルトの名無しさん
2019/04/24(水) 18:28:22.30ID:6T3A9gnL abc* というファイルが実際にあるというというのは除外でいいのね?
326デフォルトの名無しさん
2019/04/24(水) 18:32:06.10ID:6O+4Q2Ek ええです
327デフォルトの名無しさん
2019/04/24(水) 18:45:29.21ID:6T3A9gnL ダブルクォートで囲んでも囲んじゃうとglob展開は行われない変数などのようには。(>>322見るとデフォでは??展開できるなんかあっったかなあ)
[ "$(echo abc*)" = "abc*" ]
とかかな
any='abc*'; [ "$(echo $any)" = "$any" ]
[ "$(echo abc*)" = "abc*" ]
とかかな
any='abc*'; [ "$(echo $any)" = "$any" ]
328デフォルトの名無しさん
2019/04/24(水) 19:43:12.00ID:uakSx5ac 日本語がダメな奴と日本語がダメな奴が
初心者同士の会話をしてる。
ついていけない。
初心者同士の会話をしてる。
ついていけない。
329デフォルトの名無しさん
2019/04/24(水) 19:56:20.38ID:6O+4Q2Ek >>327
ありがとうございます
echoを使わずできたらお願いします
無理なら諦めます
ありがとうございます
echoを使わずできたらお願いします
無理なら諦めます
330デフォルトの名無しさん
2019/04/24(水) 20:25:30.92ID:6T3A9gnL331デフォルトの名無しさん
2019/04/24(水) 20:29:18.25ID:6T3A9gnL332デフォルトの名無しさん
2019/04/24(水) 21:08:22.56ID:uakSx5ac 何をやりたいのかわからない。
端末にecho *って入力して
あぁ、展開されましたねって
確認すりゃいいだけじゃんか
なんで[ ]とか使うのか
端末にecho *って入力して
あぁ、展開されましたねって
確認すりゃいいだけじゃんか
なんで[ ]とか使うのか
333デフォルトの名無しさん
2019/04/24(水) 21:16:12.73ID:6T3A9gnL >>332
お前が何言っているのかわからない
シェルスクリプトで判断してなにかその後にする部分のことを聞いてきているのだろう。その判断するとこだけを書いているのだろうと読むと思うけど
(日本語どうの言うなら、他人の日本語より自分の日本語を疑った方がいいようなw)
お前が何言っているのかわからない
シェルスクリプトで判断してなにかその後にする部分のことを聞いてきているのだろう。その判断するとこだけを書いているのだろうと読むと思うけど
(日本語どうの言うなら、他人の日本語より自分の日本語を疑った方がいいようなw)
334デフォルトの名無しさん
2019/04/24(水) 21:29:00.43ID:6T3A9gnL >bashで abc*が展開できると出来ないときがあって
abc* としても、該当するものがあってglob展開する場合と、該当するものがなくてglob展開しない(出来ない=globのまま)ときがあって
>それをテストするのに
展開できなかった場合はマズいので(とかなんとで)、それをテストするのに
[ "abc*" = 'abc*' ]
>とやりたいのにできません
としてみましたが、思ったようになりません
だよ。たぶんw
abc* としても、該当するものがあってglob展開する場合と、該当するものがなくてglob展開しない(出来ない=globのまま)ときがあって
>それをテストするのに
展開できなかった場合はマズいので(とかなんとで)、それをテストするのに
[ "abc*" = 'abc*' ]
>とやりたいのにできません
としてみましたが、思ったようになりません
だよ。たぶんw
335デフォルトの名無しさん
2019/04/24(水) 22:15:49.65ID:kFXKi6KY Ruby で該当するファイル数を数えれば?
それが、0 なら、該当なし
p Dir.glob( 'C:/Users/Owner/Documents/*.txt' ).length #=> 0
それが、0 なら、該当なし
p Dir.glob( 'C:/Users/Owner/Documents/*.txt' ).length #=> 0
336デフォルトの名無しさん
2019/04/24(水) 22:19:13.46ID:uakSx5ac337デフォルトの名無しさん
2019/04/24(水) 22:37:08.62ID:6T3A9gnL338デフォルトの名無しさん
2019/04/24(水) 22:39:35.88ID:6T3A9gnL 読めなかったらのをごまかすためにむちゃくちゃ言っているんだな
うん。そゆことにしとこ。でないとアレだなということで
うん。そゆことにしとこ。でないとアレだなということで
339デフォルトの名無しさん
2019/04/24(水) 22:49:53.80ID:uakSx5ac だーかーらー、いつもどおりのやってるやり方で展開して
それをチェックすればいいだけだろと
それをチェックすればいいだけだろと
340デフォルトの名無しさん
2019/04/24(水) 23:04:43.57ID:6T3A9gnL ぜんぜん「だーかーらー」でもなんでもないな。お前の言っていることはわからん
どうも自称初心者じゃない自称日本語ダメじゃない人の自分の脳の世界でなんか言ってるとしか見えない
お前の言う初心者の ID:6T3A9gnL は >>327 ので不満があるようだがそれでも答えになってるらしいぞ
お前の変な言い分はお前のためでしかなく、他に対する目的も意味もない。マウントとりたいだけのお前には意味があってもな。マウントとりたいから延々続くのか?
どうも自称初心者じゃない自称日本語ダメじゃない人の自分の脳の世界でなんか言ってるとしか見えない
お前の言う初心者の ID:6T3A9gnL は >>327 ので不満があるようだがそれでも答えになってるらしいぞ
お前の変な言い分はお前のためでしかなく、他に対する目的も意味もない。マウントとりたいだけのお前には意味があってもな。マウントとりたいから延々続くのか?
341デフォルトの名無しさん
2019/04/24(水) 23:06:17.58ID:6T3A9gnL 誤 お前の言う初心者の ID:6T3A9gnL は
正 お前の言う初心者の ID:6O+4Q2Ek は
なんかすまん
正 お前の言う初心者の ID:6O+4Q2Ek は
なんかすまん
342デフォルトの名無しさん
2019/04/24(水) 23:14:58.44ID:uakSx5ac > お前の言う初心者の ID:6T3A9gnL は >>327 ので不満があるようだがそれでも答えになってるらしいぞ
だからなんなのか知らんが、お前ら、いつもどおりの展開ってecho使ってんのか?
使ってないだろ。いつもどおりの使えばいいだけなのに、
悩んで(?)別の方法模索してるから、意味不明だって言ってるんだよ。
質問者にも回答者にも
だからなんなのか知らんが、お前ら、いつもどおりの展開ってecho使ってんのか?
使ってないだろ。いつもどおりの使えばいいだけなのに、
悩んで(?)別の方法模索してるから、意味不明だって言ってるんだよ。
質問者にも回答者にも
343デフォルトの名無しさん
2019/04/24(水) 23:22:52.75ID:6T3A9gnL344デフォルトの名無しさん
2019/04/24(水) 23:54:51.80ID:uakSx5ac 展開されるかどうかの確認はそれでいいし、
プログラムでならいつもどおりのやり方で展開すればいい
何をやりたいのかわからないのに、どちらの話かわかるわけないだろ
どちらにしろ「は?」なわけだが
プログラムでならいつもどおりのやり方で展開すればいい
何をやりたいのかわからないのに、どちらの話かわかるわけないだろ
どちらにしろ「は?」なわけだが
345デフォルトの名無しさん
2019/04/25(木) 00:00:15.44ID:SQ7d9Ur4 すでにお前に対して「は?」だよ
346デフォルトの名無しさん
2019/04/25(木) 00:02:54.32ID:zUwJ78d6 っていうか、正しいやり方知らんのか?
echo使って検査するんじゃないぞ(それじゃできない)
echo使って検査するんじゃないぞ(それじゃできない)
347デフォルトの名無しさん
2019/04/25(木) 00:05:34.10ID:zUwJ78d6 それじゃできないっていうのはコレな
> abc* というファイルが実際にあるというというのは除外でいいのね?
abc* というファイルが実際にあることも考慮するやり方をするべき
そうすれば正解にたどり着く
> abc* というファイルが実際にあるというというのは除外でいいのね?
abc* というファイルが実際にあることも考慮するやり方をするべき
そうすれば正解にたどり着く
348デフォルトの名無しさん
2019/04/25(木) 00:16:01.39ID:2wE9GZDh ダメな場合もあるのはわかって聞いているんだけど。本人がいいっていったからそれに合わせてだよ
だれかみたいに「すべき」とか強要するつもりも知識自慢したくてたまらないとかもないからな。その最後のといい、なんか偉そうにしたいのね、質問者の意図とか読まずに、知識自慢するためのw質問者の他の情報も引き出そうともせずに
shopt使うとかいう知識自慢だったら笑うぞ。別にabc*という実ファイルがあった場合でものshopt使わずにの方法もあるけどな
だれかみたいに「すべき」とか強要するつもりも知識自慢したくてたまらないとかもないからな。その最後のといい、なんか偉そうにしたいのね、質問者の意図とか読まずに、知識自慢するためのw質問者の他の情報も引き出そうともせずに
shopt使うとかいう知識自慢だったら笑うぞ。別にabc*という実ファイルがあった場合でものshopt使わずにの方法もあるけどな
349デフォルトの名無しさん
2019/04/25(木) 00:21:59.00ID:zUwJ78d6 本当に差があるやつとの会話は疲れるw
> bashで abc*が展開できると出来ないときがあって
展開でするやり方知っってるよな?それ使え
> それをテストするのに
展開できないことのテストはいらん
お前が知ってるはずの、展開するやり方を使って、
-f (もしくは -d や -e 等)で、その名前の
そのファイルが実査に有るかどうかを調べるだけ
shoptとかもしらん
> bashで abc*が展開できると出来ないときがあって
展開でするやり方知っってるよな?それ使え
> それをテストするのに
展開できないことのテストはいらん
お前が知ってるはずの、展開するやり方を使って、
-f (もしくは -d や -e 等)で、その名前の
そのファイルが実査に有るかどうかを調べるだけ
shoptとかもしらん
350デフォルトの名無しさん
2019/04/25(木) 00:22:22.15ID:zUwJ78d6 実査 -> 実際
351デフォルトの名無しさん
2019/04/25(木) 00:34:11.93ID:2wE9GZDh やっぱり、まだわかってないんだな、「展開〜」という質問を
shoptとかもしらん....
-f とか、まさかそんな「当たり前の」こと言い出すとは
まさか「その程度」だとは思わなかったわっ。なんだろこれw
shoptとかもしらん....
-f とか、まさかそんな「当たり前の」こと言い出すとは
まさか「その程度」だとは思わなかったわっ。なんだろこれw
352デフォルトの名無しさん
2019/04/25(木) 01:03:28.37ID:zUwJ78d6 × shoptとかもしらん
○ shoptとかもいらん
なんで当たり前の正解を言ったら
お前悔しがってんの?w
知識自慢したのお前じゃん
そして「は?」の意味わかっただろ。
全く見当違いのことをやろうとして、
全く見当違いの解答をしてるんだよ。
クソガキどもが
○ shoptとかもいらん
なんで当たり前の正解を言ったら
お前悔しがってんの?w
知識自慢したのお前じゃん
そして「は?」の意味わかっただろ。
全く見当違いのことをやろうとして、
全く見当違いの解答をしてるんだよ。
クソガキどもが
353デフォルトの名無しさん
2019/04/25(木) 01:09:13.03ID:2wE9GZDh354デフォルトの名無しさん
2019/04/25(木) 01:11:10.67ID:2wE9GZDh355デフォルトの名無しさん
2019/04/25(木) 01:15:09.23ID:zUwJ78d6 だから何をやりたいのかわかったのは
それ以降のレス読んでからだろうが
意味不明だし、馬鹿がクソな回答しやがるし
ほんと低い
それ以降のレス読んでからだろうが
意味不明だし、馬鹿がクソな回答しやがるし
ほんと低い
356デフォルトの名無しさん
2019/04/25(木) 01:17:21.45ID:2wE9GZDh >だから何をやりたいのかわかったのは
イミフ。おまえもたいがい日本語ダがメだぞ?w いままでのレスの数々でも
やっぱり「俺高いお前低い」とは言いたいのね。なんでそう言いたいのか自分に問いてみような
イミフ。おまえもたいがい日本語ダがメだぞ?w いままでのレスの数々でも
やっぱり「俺高いお前低い」とは言いたいのね。なんでそう言いたいのか自分に問いてみような
357デフォルトの名無しさん
2019/04/25(木) 01:19:37.90ID:2wE9GZDh ああ、「クソガキども」のお言葉いただいたので(なんでそんなこと言いたくなったのか自分に問いてみようなw)、もういいや
358デフォルトの名無しさん
2019/04/25(木) 01:20:59.82ID:zUwJ78d6 > なんでそう言いたいのか自分に問いてみような
邪魔だからだな。頭悪そうな兄ちゃんがきて
頭悪そうな会話をしてる。そんな感じだ。
邪魔だからだな。頭悪そうな兄ちゃんがきて
頭悪そうな会話をしてる。そんな感じだ。
359デフォルトの名無しさん
2019/04/25(木) 01:23:14.93ID:o77IOYp5 そして誰もいなくなった
360デフォルトの名無しさん
2019/04/25(木) 04:25:44.56ID:Q6RVSnnY 質問する側が馬鹿すぎると馬鹿を引き寄せるだけなんだよなあ。
まず、まともな質問をするために man を読もうよ。
まず、まともな質問をするために man を読もうよ。
361デフォルトの名無しさん
2019/04/25(木) 09:00:30.11ID:XBKhyEHe よくわからんが、なんで -f が出てくるんだ?
ファイルの有無が問題じゃないんだろう?
globしたかしないかが問題なんだろう?
ファイルの有無が問題じゃないんだろう?
globしたかしないかが問題なんだろう?
362デフォルトの名無しさん
2019/04/25(木) 10:40:29.00ID:xhj9dxYD ""で囲むと展開されなくて""で囲まないと複数の引数として認識するから出来ないので諦めますね
363デフォルトの名無しさん
2019/04/25(木) 10:43:57.02ID:zUwJ78d6364デフォルトの名無しさん
2019/04/25(木) 12:49:51.00ID:XBKhyEHe >>363
こういう奴がセキュリティホールを作り込むのかね
こういう奴がセキュリティホールを作り込むのかね
365デフォルトの名無しさん
2019/04/25(木) 13:29:45.25ID:wpotMNKo そもそも、ファイル名に、半角英数字、- _ (base64url encoding)以外を使うような、
システムを作る奴が悪い
さらに、Windows では、大文字小文字だけが異なる、ファイル名も作れないし。
例、aB, Ab
システムを作る奴が悪い
さらに、Windows では、大文字小文字だけが異なる、ファイル名も作れないし。
例、aB, Ab
366デフォルトの名無しさん
2019/04/25(木) 14:58:23.69ID:zUwJ78d6367デフォルトの名無しさん
2019/04/25(木) 16:49:38.33ID:hZ9DlonC なぜ自信満々なのか、馬鹿の頭の構造はわからないな。
368デフォルトの名無しさん
2019/04/25(木) 20:07:34.96ID:zUwJ78d6 反論がないから
369デフォルトの名無しさん
2019/04/26(金) 03:55:26.84ID:N1bTr2ZN 馬鹿なレスだな
370デフォルトの名無しさん
2019/04/26(金) 04:25:43.51ID:Y1o8+v/L シェルの歴史に詳しくなれるサイト見つけた
https://www.in-ulm.de/~mascheck/
https://www.in-ulm.de/~mascheck/
371デフォルトの名無しさん
2019/05/03(金) 15:34:52.90ID:m+FxQhlt bashのさ、<() ってさ、sort test.txt みたいなのを sort <(cat test) って書けるから
リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
そうとはかぎらないよな?例えば、同じファイルを二回読み込むとかさ
そういうのってやっぱ一時ファイル作らないと無理だよな?
リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
そうとはかぎらないよな?例えば、同じファイルを二回読み込むとかさ
そういうのってやっぱ一時ファイル作らないと無理だよな?
372デフォルトの名無しさん
2019/05/03(金) 18:08:45.95ID:/bmAVHAq373デフォルトの名無しさん
2019/05/03(金) 21:10:21.19ID:m+FxQhlt >>372
知らんがな。俺に言うなや。
そのツールが、そうなってるんだから
sortコマンドはただの例だからこれ以上追求しなくていい
てか、複数ファイルを入力したり複数ファイルを出力したりすることだって
あるんだから、必ずパイプで解決できるわけじゃない
diffコマンドとかそうだろ
知らんがな。俺に言うなや。
そのツールが、そうなってるんだから
sortコマンドはただの例だからこれ以上追求しなくていい
てか、複数ファイルを入力したり複数ファイルを出力したりすることだって
あるんだから、必ずパイプで解決できるわけじゃない
diffコマンドとかそうだろ
374デフォルトの名無しさん
2019/05/03(金) 21:28:48.60ID:wXl0ssRE 同じ出力のデータを分けて処理することは可能だが、なぜ魔法文にこだわっているのかがわからない。
375デフォルトの名無しさん
2019/05/03(金) 21:31:24.78ID:m+FxQhlt376デフォルトの名無しさん
2019/05/03(金) 21:32:23.63ID:m+FxQhlt まあ結論としては無理ってわかってんだけどさ
bashの拡張を持ってしても
bashの拡張を持ってしても
377デフォルトの名無しさん
2019/05/03(金) 21:35:32.54ID:m+FxQhlt あ、一時ファイル(FIFOファイル含む)作りたくないっていうのが最終的な希望ね。
メモリだけ(tmpfsや類似のメモリベースのファイルシステムやブロックデバイス除く)でやりたい。
無理ってわかってるけど。
メモリだけ(tmpfsや類似のメモリベースのファイルシステムやブロックデバイス除く)でやりたい。
無理ってわかってるけど。
378デフォルトの名無しさん
2019/05/03(金) 23:01:24.06ID:wXl0ssRE ただの無知か。
379デフォルトの名無しさん
2019/05/04(土) 09:14:36.29ID:HnSBFy63380デフォルトの名無しさん
2019/05/04(土) 09:40:10.00ID:eyQzK648 >>379
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
381デフォルトの名無しさん
2019/05/04(土) 09:47:38.10ID:HnSBFy63382デフォルトの名無しさん
2019/05/04(土) 09:57:48.90ID:eyQzK648383デフォルトの名無しさん
2019/05/04(土) 10:01:46.67ID:eyQzK648 明らかに読み間違えてるレスがくると疲れるんで、
一時ファイルを使った場合の例も書いておくは
これは例なんで、この例を修正しろなんてレスは不要
generate-text > /tmp/test.txt
kono-comand "/tmp/test.txt"
この一時ファイル test.txt を作りたくない
なんで?とかいう質問も不要
一時ファイルを使った場合の例も書いておくは
これは例なんで、この例を修正しろなんてレスは不要
generate-text > /tmp/test.txt
kono-comand "/tmp/test.txt"
この一時ファイル test.txt を作りたくない
なんで?とかいう質問も不要
384デフォルトの名無しさん
2019/05/04(土) 10:05:16.07ID:HnSBFy63385デフォルトの名無しさん
2019/05/04(土) 10:05:29.00ID:ic6F2rX1 条件の説明が下手すぎ
386デフォルトの名無しさん
2019/05/04(土) 10:07:09.78ID:eyQzK648387デフォルトの名無しさん
2019/05/04(土) 10:08:50.78ID:eyQzK648 っていうか、
generate-text | kono-comand
kono-commandの内容は上に書いたとおり↓で
> #!/bin/sh
> cat "$1"
> wc -l "$1"
修正不可能つってるんだから
これでは動きません。の一言でよかったなw
>>385
動かないコードを書いる時点で説明の問題じゃない。
generate-text | kono-comand
kono-commandの内容は上に書いたとおり↓で
> #!/bin/sh
> cat "$1"
> wc -l "$1"
修正不可能つってるんだから
これでは動きません。の一言でよかったなw
>>385
動かないコードを書いる時点で説明の問題じゃない。
388デフォルトの名無しさん
2019/05/04(土) 10:09:39.22ID:ic6F2rX1389デフォルトの名無しさん
2019/05/04(土) 10:10:34.97ID:eyQzK648 >>388
あ、回答者の説明が下手すぎってことかw
あ、回答者の説明が下手すぎってことかw
390デフォルトの名無しさん
2019/05/04(土) 10:10:41.51ID:ic6F2rX1 いつもの自信過剰な人か
391デフォルトの名無しさん
2019/05/04(土) 10:11:55.19ID:eyQzK648392デフォルトの名無しさん
2019/05/04(土) 10:15:59.85ID:ic6F2rX1 標準入力もデバイス(ファイル)としてある
393デフォルトの名無しさん
2019/05/04(土) 10:16:50.69ID:eyQzK648 https://hogem.hatenablog.com/entry/20090530/1243612485
> diff -u hoge.out fuga.out
> diff <(./hoge) <(./fuga)
よくこんな感じで、一時ファイルを作らない例として挙げられてるけど、
これって、diffが引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。
だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。
> diff -u hoge.out fuga.out
> diff <(./hoge) <(./fuga)
よくこんな感じで、一時ファイルを作らない例として挙げられてるけど、
これって、diffが引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。
だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。
394デフォルトの名無しさん
2019/05/04(土) 10:17:09.83ID:eyQzK648 >>392
知ってる
知ってる
395デフォルトの名無しさん
2019/05/04(土) 10:23:29.06ID:ic6F2rX1 ストリームでいいのかファイルでなければならないのか条件説明がやっぱり下手すぎ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ
396デフォルトの名無しさん
2019/05/04(土) 10:24:53.38ID:eyQzK648 >>395
これを満たせばいいだけ。
いい加減にしろや
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
これを満たせばいいだけ。
いい加減にしろや
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。
#!/bin/sh
cat "$1"
wc -l "$1"
↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す
397デフォルトの名無しさん
2019/05/04(土) 10:26:01.06ID:eyQzK648 はは。catとwcでファイル読み込みを二回実行してるから、
ストリームでは無理なことにも気づいてない(笑)
マヌケか
ストリームでは無理なことにも気づいてない(笑)
マヌケか
398デフォルトの名無しさん
2019/05/04(土) 10:26:07.92ID:ic6F2rX1 それが下手だと言ってもわからないんだな
399デフォルトの名無しさん
2019/05/04(土) 10:27:31.82ID:eyQzK648400デフォルトの名無しさん
2019/05/04(土) 10:30:40.72ID:eyQzK648 俺が言いたいのは、
> diff <(./hoge) <(./fuga)
が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。
<(./hoge)が使えるかどうかは、コマンド次第という話をしてる
どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。
> diff <(./hoge) <(./fuga)
が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。
<(./hoge)が使えるかどうかは、コマンド次第という話をしてる
どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。
401デフォルトの名無しさん
2019/05/04(土) 10:31:29.76ID:ic6F2rX1402デフォルトの名無しさん
2019/05/04(土) 10:32:27.87ID:eyQzK648 ということを、とあるファイルを引数にするコマンドを
一時ファイルを作らないでやろうとして
あれ?となった次第。
そのコマンド、一度だけしか読まないでできるように思えるんだけどな。
一時ファイルを作らないでやろうとして
あれ?となった次第。
そのコマンド、一度だけしか読まないでできるように思えるんだけどな。
403デフォルトの名無しさん
2019/05/04(土) 10:33:45.55ID:eyQzK648404デフォルトの名無しさん
2019/05/04(土) 10:36:59.95ID:ic6F2rX1 catやwcなんぞ各コマンドの入力ソースはストリームでしかないので、できないことはないけどな。お前には教えないがw
405デフォルトの名無しさん
2019/05/04(土) 10:38:28.81ID:eyQzK648406デフォルトの名無しさん
2019/05/04(土) 10:40:23.60ID:ic6F2rX1407デフォルトの名無しさん
2019/05/04(土) 10:40:24.64ID:eyQzK648 例だから、実際にはcatやwcが使われているわけじゃないのに
catやwcなんぞとかwww
catやwcなんぞとかwww
408デフォルトの名無しさん
2019/05/04(土) 10:40:58.27ID:eyQzK648409デフォルトの名無しさん
2019/05/04(土) 10:44:00.90ID:ic6F2rX1 コマンドの入力がストリームでいいならできる、他のなんか知らんコマンドがストリームじゃダメならできないでしかない。使用するコマンドによるでしかないだろにアホか
410デフォルトの名無しさん
2019/05/04(土) 10:53:18.47ID:eyQzK648 > コマンドの入力がストリームでいいならできる、
そんな当たり前のことを言われてもなw
重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。
それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ
> diff <(./hoge) <(./fuga)
だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。
そんな当たり前のことを言われてもなw
重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。
それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ
> diff <(./hoge) <(./fuga)
だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。
411デフォルトの名無しさん
2019/05/04(土) 10:54:58.56ID:eyQzK648 あ、bashの拡張なんて俺は普通使わんけどなw
今回はたまたま利用可能だったってだけで
今回はたまたま利用可能だったってだけで
412デフォルトの名無しさん
2019/05/04(土) 10:55:49.57ID:ic6F2rX1 では、なにを当たり前のことを延々と言っているのかね?
というような、お前のレスはこんなんばっかだな
というような、お前のレスはこんなんばっかだな
413デフォルトの名無しさん
2019/05/04(土) 10:56:37.92ID:eyQzK648414デフォルトの名無しさん
2019/05/04(土) 10:58:48.90ID:eyQzK648 基本的に、俺が出した結論が正解なので、
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン
415デフォルトの名無しさん
2019/05/04(土) 11:00:31.72ID:ic6F2rX1416デフォルトの名無しさん
2019/05/04(土) 11:03:05.91ID:eyQzK648 >>415
その答えは俺も知ってるけどな(笑)
その答えは俺も知ってるけどな(笑)
417デフォルトの名無しさん
2019/05/04(土) 11:04:39.93ID:eyQzK648 そういや前にも、
他にもやり方あるけどお前には教えてやんないよ。ばーかばーか
みたいなレスあったなw
結局やり方なかったみたいだけどw
あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!
他にもやり方あるけどお前には教えてやんないよ。ばーかばーか
みたいなレスあったなw
結局やり方なかったみたいだけどw
あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!
418デフォルトの名無しさん
2019/05/04(土) 11:05:09.17ID:ic6F2rX1 ほほー、よくわからんが解決してなにより
めずらしくちゃんと終えられてよかったよ
めずらしくちゃんと終えられてよかったよ
419デフォルトの名無しさん
2019/05/04(土) 11:10:16.30ID:eyQzK648 ほほー(笑)
420デフォルトの名無しさん
2019/05/04(土) 20:25:44.11ID:ifYIOobQ やれやれ、何事かと思ったら……
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。
421デフォルトの名無しさん
2019/05/04(土) 21:30:57.91ID:eyQzK648 ツール名聞いたって何の意味もないくせにw
じゃあgccとでも言っておこうか。一例として
じゃあgccとでも言っておこうか。一例として
422デフォルトの名無しさん
2019/05/05(日) 00:09:54.93ID:v1YqewFO チンピラ以下の馬鹿だな
423デフォルトの名無しさん
2019/05/05(日) 01:20:16.53ID:kL93aIfd なぜかシェルスクリプトのスレなのにコマンドの世界の話をしてますね。
424デフォルトの名無しさん
2019/05/05(日) 01:55:58.03ID:BV99JfCS シェルスクリプトはコマンドを使って組むもの。基本的なものですらコマンドだったり。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。
425デフォルトの名無しさん
2019/05/05(日) 04:20:05.42ID:HUD7QHVp いつものってことはこいつは常連客なのか
ちゃんとコテ付けてくれないと困るなぁ
ちゃんとコテ付けてくれないと困るなぁ
426デフォルトの名無しさん
2019/05/05(日) 13:10:37.85ID:ptHRpxR9 >>424
プログラムですよ?
プログラムですよ?
427デフォルトの名無しさん
2019/05/05(日) 19:12:30.87ID:Cb4SiVVu なにいってんのこいつ
428デフォルトの名無しさん
2019/05/05(日) 22:39:57.67ID:QbHFXZX+ やっぱワッチョイ導入しよーぜ
429デフォルトの名無しさん
2019/05/06(月) 01:18:15.86ID:VbOWf0H0 やはりそれが目的ですか
430デフォルトの名無しさん
2019/05/06(月) 13:16:54.80ID:UGCyqtDX どういうこと?
431デフォルトの名無しさん
2019/05/11(土) 15:19:07.32ID:D877RybE [ string1 > string2 ] ってPOSIX準拠じゃないよね?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?
432デフォルトの名無しさん
2019/05/12(日) 02:15:32.41ID:0u/cIV/f >>427
おまえさ、ここはシェルスクリプトのスレッドだぞ?
コマンド一発にしたいのなら、そういうコマンドを作ればいい。
UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。
おまえさ、ここはシェルスクリプトのスレッドだぞ?
コマンド一発にしたいのなら、そういうコマンドを作ればいい。
UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。
433デフォルトの名無しさん
2019/05/12(日) 02:18:26.37ID:0u/cIV/f >>431
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。
434デフォルトの名無しさん
2019/05/12(日) 02:27:43.60ID:4QpB/QIi これまた変なのが現れたな
435デフォルトの名無しさん
2019/05/12(日) 18:06:37.34ID:VATOmp33436デフォルトの名無しさん
2019/05/12(日) 19:46:54.27ID:OoMn1CYl 「文字列の比較」ができるという触れ込みで文字数の比較を
している言語やデータベースなんか聞いたこと無いなw
普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか
している言語やデータベースなんか聞いたこと無いなw
普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか
437デフォルトの名無しさん
2019/05/12(日) 20:03:17.70ID:0u/cIV/f >>436
文字列が同じ値かどうかの比較を忘れているのか?
文字列が同じ値かどうかの比較を忘れているのか?
438デフォルトの名無しさん
2019/05/12(日) 22:54:11.71ID:OoMn1CYl 変なやつだったようだな
439デフォルトの名無しさん
2019/05/12(日) 23:14:03.33ID:VATOmp33 文字数の比較じゃないのか。申し訳ない、俺の読解力が不足してた。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。
440デフォルトの名無しさん
2019/05/12(日) 23:17:08.65ID:OoMn1CYl C言語
441デフォルトの名無しさん
2019/05/13(月) 03:22:38.08ID:gc1mJry9 構文的ならC言語はできない方かなあと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと
442デフォルトの名無しさん
2019/05/13(月) 04:40:36.56ID:0SM9rJAF >>439
ベイシック
ベイシック
443デフォルトの名無しさん
2019/05/13(月) 15:51:16.30ID:JKDjGwzG444デフォルトの名無しさん
2019/05/13(月) 18:11:06.86ID:/95lNMvT C言語を基準にしたら文字列同士の比較は簡単な構文ではできない。
しかし、C言語よりあとにできたプログラミング言語は、文字列同士ができ、まったく同じ文字列かどうかの比較ができる。
同じか同じでないか以外の比較は、プログラミング言語によって比較の指定がことなる。
文字列の長さ比較なのか、文字コードの大小比較なのか、よくわからないコードは可読性が低く、シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
同じOSでも設定違いで変化するから、バグを埋め込むだけである。
しかし、C言語よりあとにできたプログラミング言語は、文字列同士ができ、まったく同じ文字列かどうかの比較ができる。
同じか同じでないか以外の比較は、プログラミング言語によって比較の指定がことなる。
文字列の長さ比較なのか、文字コードの大小比較なのか、よくわからないコードは可読性が低く、シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
同じOSでも設定違いで変化するから、バグを埋め込むだけである。
445デフォルトの名無しさん
2019/05/13(月) 18:27:44.64ID:biecMsFD > シェルスクリプトの場合は、OSが変わっただけで比較方法がかわってしまう。
どんなふうに?
例として2つ(以上)のOSで比較方法を書いてみてよ
どんなふうに?
例として2つ(以上)のOSで比較方法を書いてみてよ
446デフォルトの名無しさん
2019/05/13(月) 18:33:43.96ID:/95lNMvT だいたいどの種類のシェルか限定していない状態で具体例を挙げても意味がない。
447デフォルトの名無しさん
2019/05/13(月) 18:34:56.16ID:biecMsFD 意味有るでしょ?限定してないなら
例として○○のシェルならって書けばいいだけだよ
例として○○のシェルならって書けばいいだけだよ
448デフォルトの名無しさん
2019/05/13(月) 20:41:17.20ID:/95lNMvT シェルスクリプトが環境依存であることを知らない人間に何を言っても時間の無駄。
449デフォルトの名無しさん
2019/05/13(月) 20:42:45.31ID:/95lNMvT 文字コードが異なるだけで、文字照合順序がかわる。
同じシェルスクリプトでもテストコマンドの評価が変わる。
同じシェルスクリプトでもテストコマンドの評価が変わる。
450デフォルトの名無しさん
2019/05/13(月) 20:46:52.81ID:WOFscy66 OS?
451デフォルトの名無しさん
2019/05/13(月) 20:56:23.36ID:/95lNMvT >>450
2 デフォルトの名無しさん sage 2018/09/21(金) 23:36:59.94 ID:/eJt2TVD
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2 デフォルトの名無しさん sage 2018/09/21(金) 23:36:59.94 ID:/eJt2TVD
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
FreeBSDユーザーは/bin/shの実体がashなので注意。
Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
452デフォルトの名無しさん
2019/05/13(月) 21:26:39.05ID:biecMsFD >>449
今その話関係ないよ?
今その話関係ないよ?
453デフォルトの名無しさん
2019/05/13(月) 22:14:58.04ID:9QsNbP8l 文字コードが異なる文字列の比較をするときって
どんなとき?
どんなとき?
454デフォルトの名無しさん
2019/05/13(月) 23:06:37.15ID:zTqgOdMW エンコーディングが変われば文字列の大小比較の結果も変わるかもしれないが
それを指して「比較方法がかわってしまう」と言ってるのか?
そうだとしても OS に依存するものではないだろうし
「シェルスクリプトの場合は」というのもおかしいように思う。
勉強不足な私のためにもう少し説明してはくれないだろうか。
ところで、シェルスクリプトで文字列の大小比較ってする?
それを指して「比較方法がかわってしまう」と言ってるのか?
そうだとしても OS に依存するものではないだろうし
「シェルスクリプトの場合は」というのもおかしいように思う。
勉強不足な私のためにもう少し説明してはくれないだろうか。
ところで、シェルスクリプトで文字列の大小比較ってする?
455デフォルトの名無しさん
2019/05/13(月) 23:16:05.42ID:T+zd+wGF するからbashで拡張されたんじゃねーの?
456デフォルトの名無しさん
2019/05/13(月) 23:19:07.49ID:TrAKdX2K >>443
それ言ったらObject.compareTo()な言語全部じゃん
それ言ったらObject.compareTo()な言語全部じゃん
457デフォルトの名無しさん
2019/05/14(火) 01:01:38.75ID:M5HaQ5Df >>455
Bashってそんなことできたのか。
Bashってそんなことできたのか。
458デフォルトの名無しさん
2019/05/14(火) 01:10:46.93ID:upCBpEzH459デフォルトの名無しさん
2019/05/14(火) 09:55:51.06ID:M5HaQ5Df ん? Bashで文字列の大小ってどうやって比較するんだ?
[ "abcd" < "cde" ]
↑こういうのエラーになるぞ。
[ "abcd" < "cde" ]
↑こういうのエラーになるぞ。
460デフォルトの名無しさん
2019/05/14(火) 10:38:41.16ID:Vb/jSjs4 [[ "abcd" < "cde" ]]
461デフォルトの名無しさん
2019/05/14(火) 11:17:21.83ID:4FRIObo4 文字列の大小は文字列長のことを言っているのか?
462デフォルトの名無しさん
2019/05/14(火) 12:48:35.79ID:CYW9GfRv >>459
[ "abcd" \< "cde" ]
[ "abcd" \< "cde" ]
463デフォルトの名無しさん
2019/05/14(火) 16:26:17.41ID:kz8JbfNJ464デフォルトの名無しさん
2019/05/14(火) 16:30:21.51ID:upCBpEzH 「文字列の比較を行う」という構文やライブラリで
文字列長の比較を行ってるものなんてあるか?
数値の比較はできるんだから「文字列長を取得する」命令だけあれば十分
だから「文字列長の比較を行う」命令なんてないだろ
文字列長の比較を行ってるものなんてあるか?
数値の比較はできるんだから「文字列長を取得する」命令だけあれば十分
だから「文字列長の比較を行う」命令なんてないだろ
465デフォルトの名無しさん
2019/05/14(火) 19:07:44.93ID:M5HaQ5Df Bashで文字列の大小比較って結局なにが基準なのかな。
466デフォルトの名無しさん
2019/05/14(火) 19:08:11.58ID:M5HaQ5Df 辞書順で先かあとかじゃね?
467デフォルトの名無しさん
2019/05/14(火) 19:08:35.08ID:M5HaQ5Df (連投すまん)自問自答みたいになっちゃったけど
辞書順でした。
辞書順でした。
468デフォルトの名無しさん
2019/05/14(火) 19:37:57.03ID:SUlCeWD6 他のプログラミング言語を知らなさすぎだろうというのが複数いすぎ
469デフォルトの名無しさん
2019/05/14(火) 20:36:33.50ID:bepTC+/0 日本語すら怪しい日本人がうようよいるご時世ですから
470デフォルトの名無しさん
2019/05/14(火) 21:13:15.31ID:Mw6Gyvjp そういうやつも日本語わかってないというのも定番
471デフォルトの名無しさん
2019/05/14(火) 23:19:21.13ID:+OBjJPst シェルスクリプトはわからないが、文字列長が同じ場合は、文字コードの大小を先頭文字から比較していき、大小比較をするプログラミング言語は存在する。
472デフォルトの名無しさん
2019/05/14(火) 23:38:13.99ID:TDDhIyFE で、その名前は?
473デフォルトの名無しさん
2019/05/15(水) 01:49:21.77ID:MwugOkQt >>472
PL/SQL
PL/SQL
474デフォルトの名無しさん
2019/05/15(水) 01:54:48.92ID:qxUiM81Y へぇ、文字列長が違ったら大小を比較しないんだ
475デフォルトの名無しさん
2019/05/15(水) 01:59:24.19ID:MwugOkQt データベースの場合、文字列の昇順、降順をSQLの仕様で意識するから、文字コードの大小比較をするプログラミング言語の仕様があるのは副産物かもしれないが、簡単にできてしまうので存在する。
年月日を文字列で持っていても過去、未来を判定できる。
年月日を文字列で持っていても過去、未来を判定できる。
476デフォルトの名無しさん
2019/05/15(水) 02:01:38.78ID:qxUiM81Y > 年月日を文字列で持っていても過去、未来を判定できる。
Wed May 15 02:01:21 DST 2019
日付を文字列で持っていても?
Wed May 15 02:01:21 DST 2019
日付を文字列で持っていても?
477デフォルトの名無しさん
2019/05/15(水) 02:04:28.58ID:MwugOkQt >>474
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
478デフォルトの名無しさん
2019/05/15(水) 02:06:57.93ID:MwugOkQt >>476
わざと前方からの比較が難しい例を挙げているが、あんたの質問には全部、答えられるよ。
わざと前方からの比較が難しい例を挙げているが、あんたの質問には全部、答えられるよ。
479デフォルトの名無しさん
2019/05/15(水) 02:08:36.95ID:MwugOkQt >>476
だいたい日本でその並び順の日付文字列をデータベースに文字列として格納するアホはいない。
だいたい日本でその並び順の日付文字列をデータベースに文字列として格納するアホはいない。
480デフォルトの名無しさん
2019/05/15(水) 02:16:25.95ID:MwugOkQt 日付を文字列で持っていても、過去、未来の判定には型変換をして比較する方がコードとしてはよいコード。
日付文字列を文字列のまま比較するのは悪い例だが、そういうコードを書く人間はいる。
ただし、9999年99月99日等、現実には存在しない年月日に意味を与えて使っているシステムはたくさんあるので、型変換して比較すると、手前でさらに判定ロジックが必要になり、コードが煩雑になる。
言っておくが私はこういう設計は、基本的に好きではないし、良いとは思っていない。
日付文字列を文字列のまま比較するのは悪い例だが、そういうコードを書く人間はいる。
ただし、9999年99月99日等、現実には存在しない年月日に意味を与えて使っているシステムはたくさんあるので、型変換して比較すると、手前でさらに判定ロジックが必要になり、コードが煩雑になる。
言っておくが私はこういう設計は、基本的に好きではないし、良いとは思っていない。
481デフォルトの名無しさん
2019/05/15(水) 02:21:07.76ID:qxUiM81Y だから日付を文字列で保つ場合は、文字列照合順で比較すれば、
大小がわかるような「特別に考慮されたフォーマット」で持たなければならないだろ
日本とか関係ねーよ。和暦で持ったら比較できないし、
1月ではなく01月って持たなければならないし
自分が普段使ってるフォーマットと一致しているからたまたまできることを
「年月日を文字列で持っていれば比較できる」って言ってしまうのは思慮が浅い
大小がわかるような「特別に考慮されたフォーマット」で持たなければならないだろ
日本とか関係ねーよ。和暦で持ったら比較できないし、
1月ではなく01月って持たなければならないし
自分が普段使ってるフォーマットと一致しているからたまたまできることを
「年月日を文字列で持っていれば比較できる」って言ってしまうのは思慮が浅い
482デフォルトの名無しさん
2019/05/15(水) 02:22:49.88ID:qxUiM81Y >>447
> データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
文字列長が変わったら、設定や製品によって動きが変わるということは
文字列長が変わらないなら、動きは変わらないってことですよね。
言いたいことがわからない?
なんで全く無関係な文字列長を引き合いに出してるの?って
皮肉を言ってるんだが
> データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
文字列長が変わったら、設定や製品によって動きが変わるということは
文字列長が変わらないなら、動きは変わらないってことですよね。
言いたいことがわからない?
なんで全く無関係な文字列長を引き合いに出してるの?って
皮肉を言ってるんだが
483デフォルトの名無しさん
2019/05/15(水) 02:31:25.71ID:MwugOkQt プログラミング言語の具体例を挙げると、今度はそのプログラミング言語がわからなくて文句を言う。
結局、あんたはなんだったらわかるのか?
結局、あんたはなんだったらわかるのか?
484デフォルトの名無しさん
2019/05/15(水) 02:33:37.63ID:MwugOkQt485デフォルトの名無しさん
2019/05/15(水) 02:37:16.84ID:n5xZGXi9 >>483
シェルスクリプトじゃね?
シェルスクリプトじゃね?
486デフォルトの名無しさん
2019/05/15(水) 02:39:28.74ID:MwugOkQt 最近、目的がわからない粘着書き込みが多いね。
487デフォルトの名無しさん
2019/05/15(水) 03:07:05.55ID:qxUiM81Y488デフォルトの名無しさん
2019/05/15(水) 03:10:25.42ID:qxUiM81Y 中途半端に抜き出すと意味が分かりづらくなるな
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
壱弐参 と 肆伍陸 は文字列長が同じだから、設定や製品が違っても同じ結果になる可能性が高いこと
↑そういう主張をしてるよね?
データベースは設定によって並び順が異なるというのに、どういう理由で
設定や製品が違っても同じ結果(=並び順は異ならない)になる可能性が高いの?
データベースは設定によって並び順が異なる。だから文字列長が変わったら、設定や製品によって動きが変わる。
壱弐参 と 肆伍陸 は文字列長が同じだから、設定や製品が違っても同じ結果になる可能性が高いこと
↑そういう主張をしてるよね?
データベースは設定によって並び順が異なるというのに、どういう理由で
設定や製品が違っても同じ結果(=並び順は異ならない)になる可能性が高いの?
489デフォルトの名無しさん
2019/05/15(水) 03:22:29.41ID:ADONh+6a キモい奴に粘着されてるな
490デフォルトの名無しさん
2019/05/15(水) 09:19:16.65ID:GDL/z8kb こういうのはIDをNGしてやりすごすに限る。
491デフォルトの名無しさん
2019/05/15(水) 09:22:52.04ID:CNfTVKOT492デフォルトの名無しさん
2019/05/15(水) 16:16:49.74ID:rgIB+CAi マニュアルはそんな親切に書いてはいない。行動に意味はないがなんとか相手を打ち負かしたいという心情は理解できているよ。
493デフォルトの名無しさん
2019/05/15(水) 16:39:57.16ID:n5xZGXi9 >>492
なんでマニュアルなんだよ。仕様書って書いてあるじゃんよw
なんでマニュアルなんだよ。仕様書って書いてあるじゃんよw
494デフォルトの名無しさん
2019/05/15(水) 17:02:18.13ID:GDL/z8kb495デフォルトの名無しさん
2019/05/15(水) 18:03:00.31ID:rgIB+CAi 商用製品に仕様書があるのか?仕様製品の場合はマニュアルに書かれていること、実際の動作が仕様です。
496デフォルトの名無しさん
2019/05/15(水) 18:09:47.46ID:vLW8hIEw ただの些末な言い争い。どっちも
どっちでもどうでもいいだろう。いいたいことがわからないわけでもなし
どっちでもどうでもいいだろう。いいたいことがわからないわけでもなし
497デフォルトの名無しさん
2019/05/15(水) 18:12:01.21ID:rgIB+CAi 外国人は想定仕様と実態仕様が異なるから、仕様書など公開しない。
ユーザーが何かバグらしきものを見つけて報告して初めて仕様なのかバグなのかを答える。
世界基準では仕様通りにできていない、仕様どおりに作らないのが普通。
これが現実なのに、仕様書、仕様書と仕様書が存在すると思っているなら、この業界から去った方がいい。
ユーザーが何かバグらしきものを見つけて報告して初めて仕様なのかバグなのかを答える。
世界基準では仕様通りにできていない、仕様どおりに作らないのが普通。
これが現実なのに、仕様書、仕様書と仕様書が存在すると思っているなら、この業界から去った方がいい。
498デフォルトの名無しさん
2019/05/15(水) 18:14:29.75ID:rgIB+CAi このスレッドはOSの種類、シェルの種類も書かずに、質問してくるやつらばかりだけど、なんなのかな?
499デフォルトの名無しさん
2019/05/15(水) 18:18:51.23ID:vLW8hIEw いきなり細かいこと言い出すな。どうした?
500デフォルトの名無しさん
2019/05/15(水) 18:24:53.91ID:GDL/z8kb 文字列の大小比較をシェルスクリプトで行うなら
sortとか使ったらいいのかな。
[ "$(<<. sort | head -n 1\
$1\
$2\
.)" = "$1" ]
↑こういう感じで。
sortとか使ったらいいのかな。
[ "$(<<. sort | head -n 1\
$1\
$2\
.)" = "$1" ]
↑こういう感じで。
501デフォルトの名無しさん
2019/05/15(水) 18:39:25.08ID:n5xZGXi9502デフォルトの名無しさん
2019/05/15(水) 18:49:05.20ID:CNfTVKOT 「仕様書」と書いたことにそこまでの意味は無いよ。
客観的に見て信頼できるドキュメントで示しなさいということ。
実際、>>471 だけじゃ等しいかどうかの判定しかできない。
文字列の大小比較の話だというなら、どんな条件でそれが起こるのか
SQL で示すなりしてくれないと伝わらないよ。
それをしていない以上、ID:qxUiM81Y の言うことも正論と認めざるを得ない。
客観的に見て信頼できるドキュメントで示しなさいということ。
実際、>>471 だけじゃ等しいかどうかの判定しかできない。
文字列の大小比較の話だというなら、どんな条件でそれが起こるのか
SQL で示すなりしてくれないと伝わらないよ。
それをしていない以上、ID:qxUiM81Y の言うことも正論と認めざるを得ない。
503デフォルトの名無しさん
2019/05/15(水) 19:12:50.12ID:qxUiM81Y 飽きてきたなw
つーか、お馬鹿さんは、さっさと、
文字列の比較で、文字列の長さは一切関係ない。
間違っていました。すみませんでした。って謝ればいいのにw
つーか、お馬鹿さんは、さっさと、
文字列の比較で、文字列の長さは一切関係ない。
間違っていました。すみませんでした。って謝ればいいのにw
504デフォルトの名無しさん
2019/05/15(水) 21:45:08.88ID:GDL/z8kb 飽きてきたんならもう書き込むなよ、荒し。
人を煽ることしかできない癖に議論に参加するんじゃねーよ。
他の皆さん申し訳ない。警告とは言え不快な思いをさせたかもしれない。
ところでもう一度訊くけど、シェルスクリプトで文字列の大小を比較したいときは
sortを使うくらいしか方法はないのかな?
始めに質問した人が条件として設定したような「外部コマンドを使わない」のは無理っぽい……?
人を煽ることしかできない癖に議論に参加するんじゃねーよ。
他の皆さん申し訳ない。警告とは言え不快な思いをさせたかもしれない。
ところでもう一度訊くけど、シェルスクリプトで文字列の大小を比較したいときは
sortを使うくらいしか方法はないのかな?
始めに質問した人が条件として設定したような「外部コマンドを使わない」のは無理っぽい……?
505デフォルトの名無しさん
2019/05/15(水) 21:48:58.32ID:8+QjeEhQ だから大小とは文字列の長さなのかアルファベット順なのか?
出力のフォーマットはどういうのか?
二つの文字列を比較すればいいのか、複数の文字列を比較したいのか?
を書いてくれないと答えられない
出力のフォーマットはどういうのか?
二つの文字列を比較すればいいのか、複数の文字列を比較したいのか?
を書いてくれないと答えられない
506デフォルトの名無しさん
2019/05/15(水) 22:04:31.16ID:qxUiM81Y > だから大小とは文字列の長さなのかアルファベット順なのか?
文字列の(現在の)照合順序だって書いてあるし、決まってる。
文字列の比較を文字列の長さの意味で使う開発者なんていない
> 出力のフォーマットはどういうのか?
書いてない=自由なんだから、お前にとって一番都合がいい方法で答えろ
> 二つの文字列を比較すればいいのか、複数の文字列を比較したいのか?
書いてない=自由なんだから、お前にとって一番都合がいい方法で答えろ
なんで、書いてくれないと答えられないんだか
書いてなくても答えられるだろ。
文字列の(現在の)照合順序だって書いてあるし、決まってる。
文字列の比較を文字列の長さの意味で使う開発者なんていない
> 出力のフォーマットはどういうのか?
書いてない=自由なんだから、お前にとって一番都合がいい方法で答えろ
> 二つの文字列を比較すればいいのか、複数の文字列を比較したいのか?
書いてない=自由なんだから、お前にとって一番都合がいい方法で答えろ
なんで、書いてくれないと答えられないんだか
書いてなくても答えられるだろ。
507デフォルトの名無しさん
2019/05/15(水) 22:05:43.02ID:qxUiM81Y508デフォルトの名無しさん
2019/05/15(水) 23:07:34.91ID:ADONh+6a >>453もこいつだろ
509デフォルトの名無しさん
2019/05/15(水) 23:55:13.52ID:rPDD3yJh >>507
無理して回答するフリしなくていいからね
無理して回答するフリしなくていいからね
510デフォルトの名無しさん
2019/05/16(木) 01:20:41.38ID:vwl5T96/ ファイルの名前として文字列郡が与えられてたら
echo *とかで並び換えられる(つまりsortっぽい機能が得られる)んだけど
今回は(恐らく)引数として文字列が渡されるのでやっぱ無理っぽいな。
>>509荒しは無視っとくのが一番だぜ
echo *とかで並び換えられる(つまりsortっぽい機能が得られる)んだけど
今回は(恐らく)引数として文字列が渡されるのでやっぱ無理っぽいな。
>>509荒しは無視っとくのが一番だぜ
511デフォルトの名無しさん
2019/05/16(木) 01:24:03.49ID:M/ddkVVC512デフォルトの名無しさん
2019/05/16(木) 01:37:32.04ID:Hp+66qW2 文字列比較をファイル名比較にすり替えるなよ
自演も大概にしろ お前の話は詰まらないんだよ
自演も大概にしろ お前の話は詰まらないんだよ
513デフォルトの名無しさん
2019/05/16(木) 03:24:15.62ID:lo0yg8aJ >>511
どうやって必要なファイルだけ用意するの?
どうやって必要なファイルだけ用意するの?
514デフォルトの名無しさん
2019/05/16(木) 06:21:17.18ID:vwl5T96/ 「俺が見つけた方法」か……。
すげぇな。傲慢にも程ってもんがある。
すげぇな。傲慢にも程ってもんがある。
515デフォルトの名無しさん
2019/05/16(木) 06:47:03.30ID:x+0B705t >>500
http://pubs.opengroup.org/onlinepubs/9699919799/
EXTENDED DESCRIPTION
Returns the result of a decimal integer comparison if both arguments are integers;
otherwise, returns the result of a string comparison using the locale-specific collation sequence. The result of each comparison is 1 if the specified relationship is true, or 0 if the relationship is false.
だって。exprでいいんじゃないかな
http://pubs.opengroup.org/onlinepubs/9699919799/
EXTENDED DESCRIPTION
Returns the result of a decimal integer comparison if both arguments are integers;
otherwise, returns the result of a string comparison using the locale-specific collation sequence. The result of each comparison is 1 if the specified relationship is true, or 0 if the relationship is false.
だって。exprでいいんじゃないかな
516デフォルトの名無しさん
2019/05/16(木) 06:50:33.69ID:x+0B705t517デフォルトの名無しさん
2019/05/16(木) 07:51:42.22ID:0AR+7D8t いや、仕様というか使う目的が決まらないと
そもそもプログラミングが始められないわけだが
「何々に決まっている(と私は思っている)」というのはプログラミングで
もっとも危険な言葉。これで誤解して会社がなくなった例は
たくさんある。
そもそもプログラミングが始められないわけだが
「何々に決まっている(と私は思っている)」というのはプログラミングで
もっとも危険な言葉。これで誤解して会社がなくなった例は
たくさんある。
518デフォルトの名無しさん
2019/05/16(木) 07:56:40.94ID:LVaXUmAu519デフォルトの名無しさん
2019/05/16(木) 12:02:41.41ID:M/ddkVVC >>517
そのうち数値を比較する方法を教えてって言ったら
その数値は10進数なのか16進数なのか
漢数字なのかローマ数字なのか
それを決めてくれないと答えられん(←嘘、答えられる)
って言い出しそうだなw
そのうち数値を比較する方法を教えてって言ったら
その数値は10進数なのか16進数なのか
漢数字なのかローマ数字なのか
それを決めてくれないと答えられん(←嘘、答えられる)
って言い出しそうだなw
520デフォルトの名無しさん
2019/05/16(木) 12:17:22.10ID:zHdFWFB/ 別にどっちの味方をするつもりもないけど
例えば文字コード順に比較するんであれば七(U+4E03)は六(U+516D)より小さくなるし
そういう前提というか(此ちらの常識と向うの常識の共有というか)を擦り合わせることは重要だと思うけどね
まあ結局なにが言いたいかっていうと
「シェルスクリプトの話をしてください」
例えば文字コード順に比較するんであれば七(U+4E03)は六(U+516D)より小さくなるし
そういう前提というか(此ちらの常識と向うの常識の共有というか)を擦り合わせることは重要だと思うけどね
まあ結局なにが言いたいかっていうと
「シェルスクリプトの話をしてください」
521デフォルトの名無しさん
2019/05/16(木) 12:46:01.37ID:M/ddkVVC >>520
そういう話じゃなくて、どちらでもいいことなのに
なんでどちらに決めてくれないと、ワカリマセンになるのかってことだよ
文字の順番の定義と
文字の順番を判定する方法
は別の話
本当は答えを知らなくて「わかりません」っていうのが恥ずかしくて
ごまかすために質問してるんだろ?「お前の質問のせいで、わかりません」って言うために
その証拠に現在の文字列照合順序って答えているのに、それを無視し続けている。
そういう話じゃなくて、どちらでもいいことなのに
なんでどちらに決めてくれないと、ワカリマセンになるのかってことだよ
文字の順番の定義と
文字の順番を判定する方法
は別の話
本当は答えを知らなくて「わかりません」っていうのが恥ずかしくて
ごまかすために質問してるんだろ?「お前の質問のせいで、わかりません」って言うために
その証拠に現在の文字列照合順序って答えているのに、それを無視し続けている。
522デフォルトの名無しさん
2019/05/16(木) 17:48:55.94ID:zHdFWFB/ うーん。
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以下の数しか許されない
という仕様のほうが,仕様も短かいし実装も簡潔になると思うんだけど。
623デフォルトの名無しさん
2019/06/03(月) 08:15:05.64ID:8eXXlkO0 Ruby では、
re = /([^h]+)h([^m]+)m/
# str = "1h0m"
str = "1.5h0m"
md = str.match( re )
# p md[ 1 ], md[ 2 ] #=> capture 部分
begin # 整数じゃなければ、浮動小数点にする
hour = Integer( md[ 1 ] )
rescue ArgumentError
hour = Float( md[ 1 ] )
end
minute = md[ 2 ].to_i # 整数
p hour, minute #=> 1.5, 0
re = /([^h]+)h([^m]+)m/
# str = "1h0m"
str = "1.5h0m"
md = str.match( re )
# p md[ 1 ], md[ 2 ] #=> capture 部分
begin # 整数じゃなければ、浮動小数点にする
hour = Integer( md[ 1 ] )
rescue ArgumentError
hour = Float( md[ 1 ] )
end
minute = md[ 2 ].to_i # 整数
p hour, minute #=> 1.5, 0
624デフォルトの名無しさん
2019/06/03(月) 09:09:22.60ID:8ZNdPBG6625デフォルトの名無しさん
2019/06/03(月) 09:23:57.43ID:amnwC05e >>624
ほーん。*長文*ありがとう。
ほーん。*長文*ありがとう。
626デフォルトの名無しさん
2019/06/03(月) 09:33:21.71ID:0fpHz+xZ >>614
\([0-9.][0-9.]\)*m が入ってしまっているので、
echo "($(echo '1.5h00m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
とかするしかない
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\(\([0-9.][0-9.]\)*m\)\?/\1 * 60 + \3/')) * 60"
なんてすると、 (1.5 * 60 + ) * 60 になって bc で syntax error
\([0-9.][0-9.]\)*m が入ってしまっているので、
echo "($(echo '1.5h00m' | sed -e 's/\([0-9.][0-9.]\)*h\([0-9.][0-9.]\)*m/\1 * 60 + \2/')) * 60"
とかするしかない
echo "($(echo '1.5h' | sed -e 's/\([0-9.][0-9.]\)*h\(\([0-9.][0-9.]\)*m\)\?/\1 * 60 + \3/')) * 60"
なんてすると、 (1.5 * 60 + ) * 60 になって bc で syntax error
627デフォルトの名無しさん
2019/06/03(月) 09:35:00.19ID:z2LdD30j >>626
行き当たりばったりのクソコードなんか相手にしなくていいで
行き当たりばったりのクソコードなんか相手にしなくていいで
628デフォルトの名無しさん
2019/06/03(月) 09:40:07.68ID:z2LdD30j 代わりに俺が同じアプローチのまとなコード書いてやるからよ
echo '1.5h' | sed -E 's/(([0-9.]+)h)?(([0-9.]+)m)?(([0-9.]+)s)?/(\2-0)*3600+(\4-0)*60+(\6-0)/' | bc
(.0を消したければ>>615を参考に /1 すればいい)
echo '1.5h' | sed -E 's/(([0-9.]+)h)?(([0-9.]+)m)?(([0-9.]+)s)?/(\2-0)*3600+(\4-0)*60+(\6-0)/' | bc
(.0を消したければ>>615を参考に /1 すればいい)
629デフォルトの名無しさん
2019/06/03(月) 09:49:10.30ID:0fpHz+xZ やるなぁ、、て言うか相手してやってるやんw
630デフォルトの名無しさん
2019/06/03(月) 09:52:56.88ID:z2LdD30j クソコードはクソコードで終わりでいいって話
あ、クソコードですね♪使い物になりませんね♪でいいってことよ。
いちいちこういう場合にエラーがなりますとかやらなくていい
さっさと廃棄処分してしまおう。
あ、クソコードですね♪使い物になりませんね♪でいいってことよ。
いちいちこういう場合にエラーがなりますとかやらなくていい
さっさと廃棄処分してしまおう。
631623
2019/06/03(月) 11:22:16.99ID:8eXXlkO0 まず設計がおかしい!
バグのほとんどは、設計がおかしいから起きる
時間は、0〜24 の整数のみ。
分は、0〜60 の整数のみ
最大で、24時間までとか
整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!
バグのほとんどは、設計がおかしいから起きる
時間は、0〜24 の整数のみ。
分は、0〜60 の整数のみ
最大で、24時間までとか
整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!
632デフォルトの名無しさん
2019/06/03(月) 11:25:36.69ID:8qtiF3dA633デフォルトの名無しさん
2019/06/03(月) 11:26:56.98ID:amnwC05e >>632
やめたれw
やめたれw
634デフォルトの名無しさん
2019/06/03(月) 12:27:27.29ID:3fU/jk6b つまりrubyを使うと統合失調症になってしまうということ?
635デフォルトの名無しさん
2019/06/03(月) 13:18:07.10ID:amnwC05e そんなことには、ならない!
Rubyは、すばらしい言語
Rubyは、すばらしい言語
636デフォルトの名無しさん
2019/06/03(月) 13:28:47.52ID:3fU/jk6b やっぱりなってしまうんだね…
637623
2019/06/04(火) 05:26:37.80ID://1XsOfQ 整数に変換できなければ、浮動小数点に変換するとか、明らかにおかしいでしょ?
だから、質問者に言われた通りに書いたら、おかしいと言うこと!
>>631
>時間は、0〜24 の整数のみ。
>分は、0〜60 の整数のみ
多くの言語が採用しているのは、
時間は、0〜23 の整数のみ。
分は、0〜59 の整数のみ
色んな言語の、Time クラスのメソッドを参照
だから、質問者に言われた通りに書いたら、おかしいと言うこと!
>>631
>時間は、0〜24 の整数のみ。
>分は、0〜60 の整数のみ
多くの言語が採用しているのは、
時間は、0〜23 の整数のみ。
分は、0〜59 の整数のみ
色んな言語の、Time クラスのメソッドを参照
638デフォルトの名無しさん
2019/06/04(火) 05:55:02.35ID:oQKNEIyc >>623「整数に変換できなければ、浮動小数点に変換する」
↓
>>631「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
↓
>>637「質問者が整数に変換できなければ、浮動小数点に変換するって言った!浮動小数点でスレを検索してみろ!」
【検索結果】
623 名前:デフォルトの名無しさん[sage] 投稿日:2019/06/03(月) 08:15:05.64 ID:8eXXlkO0 [1/2]
631 名前:623[sage] 投稿日:2019/06/03(月) 11:22:16.99 ID:8eXXlkO0 [2/2]
637 名前:623[] 投稿日:2019/06/04(火) 05:26:37.80 ID://1XsOfQ
↓
>>631「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
↓
>>637「質問者が整数に変換できなければ、浮動小数点に変換するって言った!浮動小数点でスレを検索してみろ!」
【検索結果】
623 名前:デフォルトの名無しさん[sage] 投稿日:2019/06/03(月) 08:15:05.64 ID:8eXXlkO0 [1/2]
631 名前:623[sage] 投稿日:2019/06/03(月) 11:22:16.99 ID:8eXXlkO0 [2/2]
637 名前:623[] 投稿日:2019/06/04(火) 05:26:37.80 ID://1XsOfQ
639デフォルトの名無しさん
2019/06/04(火) 06:05:44.33ID:oQKNEIyc >>637
俺はシェルスクリプトもRubyも上級者なんだよなぁ(苦笑)
$ irb
irb(main):001:0> require 'active_support/time'
=> true
irb(main):002:0> 1.5.hours
=> 5400.0 seconds
俺はシェルスクリプトもRubyも上級者なんだよなぁ(苦笑)
$ irb
irb(main):001:0> require 'active_support/time'
=> true
irb(main):002:0> 1.5.hours
=> 5400.0 seconds
640デフォルトの名無しさん
2019/06/04(火) 11:07:03.94ID:P6ocUs46 >>638
草ァ!
草ァ!
641デフォルトの名無しさん
2019/06/04(火) 23:40:36.15ID:91A1BNDa >>591
最初に引数を"h"→"h "、"m"→"m "に変換するといいんじゃないかな
最初に引数を"h"→"h "、"m"→"m "に変換するといいんじゃないかな
642デフォルトの名無しさん
2019/06/05(水) 00:03:31.85ID:uJguGtrO 小数点を含んだ時刻表記(単位は時・分)を秒数に正規化する,みたいな話かね
643デフォルトの名無しさん
2019/06/05(水) 01:44:13.04ID:Rs8bMd2A 練習のために書いてて、うまい書き方は無いかという話だった気がするのだが…
644デフォルトの名無しさん
2019/06/05(水) 12:04:44.96ID:UTQhx3T7 だよな、単に。sedならという応えも直後にあっての
変なのが変な話に変えてる
変なのが変な話に変えてる
645デフォルトの名無しさん
2019/06/05(水) 12:17:13.51ID:HgsnwJuZ 質問者「今から1時間後とか、あと1.5時間後とかにも対応してみました」
Ruby厨「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
Ruby厨「時間は0〜24の整数のみ! 午前1時30分のことを1.5時とか言わない!」
Ruby厨「整数に変換できなければ、浮動小数点に変換するとか、こんなおかしな設計はない!」
Ruby厨「時間は0〜24の整数のみ! 午前1時30分のことを1.5時とか言わない!」
646デフォルトの名無しさん
2019/06/05(水) 15:13:01.25ID:ufQ3ijM/ バッシュでファイル名がアスキーコードが判定する方法教えて下さい一番簡単に
アスキーコードはUTF8の一部でもあるのでnkfは確認出来ないとおもいました
アスキーコードはUTF8の一部でもあるのでnkfは確認出来ないとおもいました
647デフォルトの名無しさん
2019/06/05(水) 16:22:42.00ID:ujLKUPuk if iconv -t ASCII <<< "$filename" > /dev/null 2>&1; then
必要なら -f を。必要なら ASCII 以外の他のエンコーディングを
必要なら -f を。必要なら ASCII 以外の他のエンコーディングを
648デフォルトの名無しさん
2019/06/05(水) 16:47:06.73ID:HgsnwJuZ >>646
この程度でbash専用にする必要ない。nkfもiconvも遅い。
case $filename in
*[!a-z]*) # a-z以外の文字がある
*) # a-zのみ
esac
あとはASCIIのみになるようにすればいい
POSIX文字クラスを使うと楽
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions#Character_classes
制御コード入れたいのかにもよるのとASCIIコード以外にあてはまるかどうか調べてないが
例えば [![:cntrl:][:print:]] とかかな? 最悪一文字ずつ書けばいいだろう。
この程度でbash専用にする必要ない。nkfもiconvも遅い。
case $filename in
*[!a-z]*) # a-z以外の文字がある
*) # a-zのみ
esac
あとはASCIIのみになるようにすればいい
POSIX文字クラスを使うと楽
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions#Character_classes
制御コード入れたいのかにもよるのとASCIIコード以外にあてはまるかどうか調べてないが
例えば [![:cntrl:][:print:]] とかかな? 最悪一文字ずつ書けばいいだろう。
649デフォルトの名無しさん
2019/06/05(水) 17:15:11.07ID:xkVLsoK0650デフォルトの名無しさん
2019/06/05(水) 17:16:08.94ID:HgsnwJuZ >>649
何もおかしなところ無いんだが?
何もおかしなところ無いんだが?
651デフォルトの名無しさん
2019/06/05(水) 17:18:19.69ID:xkVLsoK0 正しく動くASCII判定のをどうぞ
652デフォルトの名無しさん
2019/06/05(水) 17:21:46.42ID:HgsnwJuZ あぁ、なにか言い返したかっただけかw
653デフォルトの名無しさん
2019/06/05(水) 17:27:42.29ID:xkVLsoK0 やはりRuby厨と変わらないw
正しく動くのを示せばいいだけでしょ、勝手にa-zだけじゃなく。それがちゃんとASCIIと判定できるなら
正しく動くのを示せばいいだけでしょ、勝手にa-zだけじゃなく。それがちゃんとASCIIと判定できるなら
654デフォルトの名無しさん
2019/06/05(水) 17:30:08.86ID:HgsnwJuZ 質問者じゃないお前と問答する意味ないよ
655デフォルトの名無しさん
2019/06/05(水) 17:31:24.15ID:xkVLsoK0 横槍はするが、自分に横槍すんなか。やはりRuby厨と変わらないw
656デフォルトの名無しさん
2019/06/05(水) 17:34:27.22ID:HgsnwJuZ よっぽど悔しかったんだろうなぁ(笑)
657デフォルトの名無しさん
2019/06/05(水) 17:37:01.79ID:xkVLsoK0658デフォルトの名無しさん
2019/06/05(水) 17:39:55.68ID:HgsnwJuZ だからお前と問答する必要はない話だよねw
質問者にヒントを出した。あとは自分でやるか、"質問者"が泣きつくかどうかだろ
なんでお前が泣きついてるんだ?えーんえーん(笑)
質問者にヒントを出した。あとは自分でやるか、"質問者"が泣きつくかどうかだろ
なんでお前が泣きついてるんだ?えーんえーん(笑)
659デフォルトの名無しさん
2019/06/05(水) 17:43:17.72ID:xkVLsoK0 ヒントを出した、泣きつくかどうか
よくそんな言葉吐けるな。ちょっと前のいつものヤツか、その子供のような最後といい、よく恥ずかしげもなく書けるなw
よくそんな言葉吐けるな。ちょっと前のいつものヤツか、その子供のような最後といい、よく恥ずかしげもなく書けるなw
660デフォルトの名無しさん
2019/06/05(水) 17:47:03.77ID:HgsnwJuZ やっぱりいつもの悔しい思いをしたやつだったかw
661デフォルトの名無しさん
2019/06/05(水) 17:51:21.47ID:oTS9vdrC いつものヤツだったのは正解らしいww
662デフォルトの名無しさん
2019/06/05(水) 17:56:56.88ID:HgsnwJuZ いつもの悔しい思いをしたやつってのは正解らしいwww
663デフォルトの名無しさん
2019/06/05(水) 17:58:17.08ID:oTS9vdrC は?お前は敵がいっぱいだなwww
664デフォルトの名無しさん
2019/06/05(水) 17:59:16.05ID:xpgfEjrk お前ほどじゃないよw
665デフォルトの名無しさん
2019/06/05(水) 18:01:04.69ID:ye33y5kG bash や zsh の場合、locale 依存なんだなぁ
$ bash -c 'LC_CTYPE=C; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
y
bash で [:ascii:] を使う場合には locale は関係なし
$ bash -c 'LC_CTYPE=C; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=C; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
y
bash で [:ascii:] を使う場合には locale は関係なし
$ bash -c 'LC_CTYPE=C; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
666デフォルトの名無しさん
2019/06/05(水) 18:05:10.12ID:xpgfEjrk >>665
そうそう。だから面倒なので「ASCIIコード以外にあてはまるかどうか調べてない」し
「最悪一文字ずつ書けばいい」
あとbashやzshって限定しなくて良いよ。全部そうだから
> bash で [:ascii:] を使う場合には
[:ascii:]はPOSIXクラスじゃない
そうそう。だから面倒なので「ASCIIコード以外にあてはまるかどうか調べてない」し
「最悪一文字ずつ書けばいい」
あとbashやzshって限定しなくて良いよ。全部そうだから
> bash で [:ascii:] を使う場合には
[:ascii:]はPOSIXクラスじゃない
667デフォルトの名無しさん
2019/06/05(水) 18:12:43.44ID:9iVEjLSM なんで誰も求めていないPOSIXや速さにそんなにこだわるんだかな
>>665はちゃんと前段と分けて「bash で [:ascii:] を使う場合」とも言っている=「bashで」と言っているのに、なんでそうも自分は知ってるを出したいんだか
>>665はちゃんと前段と分けて「bash で [:ascii:] を使う場合」とも言っている=「bashで」と言っているのに、なんでそうも自分は知ってるを出したいんだか
668デフォルトの名無しさん
2019/06/05(水) 18:15:02.41ID:ye33y5kG ところが Ubuntu の dash(conform with the POSIX 1003.2 and
1003.2a specifications for the shell)は依存しないのよね…(上の例ではどちらも x を返す)
1003.2a specifications for the shell)は依存しないのよね…(上の例ではどちらも x を返す)
669デフォルトの名無しさん
2019/06/05(水) 18:15:24.53ID:oTS9vdrC 他人のレスを読めないのに妄想だけは
いつものことか
いつものことか
670デフォルトの名無しさん
2019/06/05(水) 18:15:31.51ID:xpgfEjrk 「求めていない」と明言していない以上、
「求めていない」なんてお前が断定するなってことだよ。
「求めていない」なんてお前が断定するなってことだよ。
671デフォルトの名無しさん
2019/06/05(水) 18:17:47.05ID:9iVEjLSM 読めない人だねえ
672デフォルトの名無しさん
2019/06/05(水) 18:21:58.87ID:9iVEjLSM673デフォルトの名無しさん
2019/06/05(水) 18:29:57.26ID:9iVEjLSM dashはプログラムでロケール(LC_CTYPE)の設定をしてない手抜きとかか。も考えられるね。どうであろうとデフォ= Cという
674デフォルトの名無しさん
2019/06/06(木) 17:44:19.74ID:KuydtzNG675デフォルトの名無しさん
2019/06/06(木) 19:05:13.64ID:f9T2ABl2 虚栄心の塊を助けるような真似はしたくはないな俺だったら
676デフォルトの名無しさん
2019/06/07(金) 08:04:35.63ID:rFfmCjQx 「助ける」って表現おかしくね?
だって誰も「助けてくれ」なんて言ってないじゃん。
既に質問者の「助けて」には親切な奴が答えてくれている途中だった。
正しく動くプログラムに勝手にケチ付けた挙句、なんの案も出さずに「間違ってる」だけしか言ってないよね。
だって誰も「助けてくれ」なんて言ってないじゃん。
既に質問者の「助けて」には親切な奴が答えてくれている途中だった。
正しく動くプログラムに勝手にケチ付けた挙句、なんの案も出さずに「間違ってる」だけしか言ってないよね。
677デフォルトの名無しさん
2019/06/07(金) 09:02:53.19ID:wbS/xMGA それな。
こっちは「こんな感じで作れますよー」って言ってるだけ
あとは簡単なので質問者でもできるだろう
(できないなら何かしらのレスをするだろう)
そこにいちいち、それは完璧に動かないって言うだけ。言うだけ厨w
こっちは「こんな感じで作れますよー」って言ってるだけ
あとは簡単なので質問者でもできるだろう
(できないなら何かしらのレスをするだろう)
そこにいちいち、それは完璧に動かないって言うだけ。言うだけ厨w
678デフォルトの名無しさん
2019/06/07(金) 14:05:05.10ID:tJklw1kZ 怪しいレスだなw
679デフォルトの名無しさん
2019/06/07(金) 23:38:40.76ID:sMkNqk8q680デフォルトの名無しさん
2019/06/12(水) 05:02:41.26ID:mlkAn7XZ シェルスクリプトのスレは以下に統合しました。
今後シェルスクリプトの話題はこちらで
くだらねえ質問はここに書き込め! Part 236
https://mao.5ch.net/test/read.cgi/linux/1556462911/
今後シェルスクリプトの話題はこちらで
くだらねえ質問はここに書き込め! Part 236
https://mao.5ch.net/test/read.cgi/linux/1556462911/
681デフォルトの名無しさん
2019/06/14(金) 01:38:30.44ID:ndORQo1H 某知恵袋で見かけた「ID非公開」さんの質問。
> Linuxのシェルスクリプトで質問です。
> リダイレクトの0は標準入力、1は標準出力、2は標準エラー出力。
> 0、1、2の他にも、3以上の番号もあるそうです。
> これら、3以上の番号を使った例を教えてください。
カテゴリマスター sle********さんの回答
> ファイルをオープンすれば3から順に使われるのだけど。
> 0,1,2の3つしか呼び出すプログラムには伝わらないのでできないのじゃないかな。
シェルスクリプトの話だということすら理解できてないなら回答するなよ。
シェルスクリプト リダイレクト exec
でググれよとか思ったけど、「ID非公開」という時点で相手にする価値が無いしなあ…
> Linuxのシェルスクリプトで質問です。
> リダイレクトの0は標準入力、1は標準出力、2は標準エラー出力。
> 0、1、2の他にも、3以上の番号もあるそうです。
> これら、3以上の番号を使った例を教えてください。
カテゴリマスター sle********さんの回答
> ファイルをオープンすれば3から順に使われるのだけど。
> 0,1,2の3つしか呼び出すプログラムには伝わらないのでできないのじゃないかな。
シェルスクリプトの話だということすら理解できてないなら回答するなよ。
シェルスクリプト リダイレクト exec
でググれよとか思ったけど、「ID非公開」という時点で相手にする価値が無いしなあ…
682デフォルトの名無しさん
2019/06/14(金) 02:49:59.61ID:IaHhNJVN なにをいいたいのだか
683デフォルトの名無しさん
2019/06/14(金) 14:10:08.67ID:BMAIfRwQ まあ確かにその説明は間違ってるけど
態々Yahoo知恵袋の回答を5chに持って来てまで叩くことあるかね……。
態々Yahoo知恵袋の回答を5chに持って来てまで叩くことあるかね……。
684デフォルトの名無しさん
2019/06/14(金) 22:48:51.07ID:0KPEzZXE そう言えば以前 flock コマンドを使ってここに書かれているような排他ロックを掛けるのを書いたことがある。
http://fj.hatenablog.jp/entry/2016/03/12/223319
で、リダイレクトはこの例のように 200 とか使ったのだが、しかし、これが使われていたらまともに動かないのではないかと思う。
かといって現在使われていないファイルデスクリプタを探す方法があるのかというと、Linux なら /proc/$$/fd/ 以下を見れば
良いんだろうが多分OSごとにやり方が違っていると思う。ということで開きファイルでスクリプタを探す方法は bash にあるんだ
ろうか? (bash でなくても良いが)。それとも探さずともシステムコールの open() 等のように空きを探し出して使ってくれる
みたいな書き方はできるんだろうか?
http://fj.hatenablog.jp/entry/2016/03/12/223319
で、リダイレクトはこの例のように 200 とか使ったのだが、しかし、これが使われていたらまともに動かないのではないかと思う。
かといって現在使われていないファイルデスクリプタを探す方法があるのかというと、Linux なら /proc/$$/fd/ 以下を見れば
良いんだろうが多分OSごとにやり方が違っていると思う。ということで開きファイルでスクリプタを探す方法は bash にあるんだ
ろうか? (bash でなくても良いが)。それとも探さずともシステムコールの open() 等のように空きを探し出して使ってくれる
みたいな書き方はできるんだろうか?
685デフォルトの名無しさん
2019/06/14(金) 22:49:46.28ID:0KPEzZXE 間違えた。開きじゃなくて空きだな。
686デフォルトの名無しさん
2019/06/14(金) 23:00:24.10ID:gXbRy3uY687デフォルトの名無しさん
2019/06/14(金) 23:05:28.80ID:gXbRy3uY Ruby のTempfile みたいな、一時ファイルでも作れば?
688デフォルトの名無しさん
2019/06/14(金) 23:21:07.72ID:kMuJFPPh689デフォルトの名無しさん
2019/06/18(火) 06:18:56.48ID:3nOE2mBA プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
690デフォルトの名無しさん
2019/06/18(火) 15:03:38.59ID:3Qr44a8e shebangの書き方について教えてください。
#!/bin/sh
# Next line is comment in Tcl, but not in sh... \
exec tclsh "$0" ${1+"$@"}
( 出典: https://rosettacode.org/wiki/Multiline_shebang )
コメント解釈の違いを利用して複数行に云々は分かります。
ただ気になった箇所が...
${1+"$@"}
これは一体どういう意味合いが込められてるのでしょうか?
Tcl 以外にも Perl とかでも同様の箇所があります。
引数 $1 が unsetなら null
そうでなければ "$1" "$2" "$3" . . . って事ですよね。
それって、ただ "$@" と書くのと違いが分かりません。
ちなみに公式推奨は
man tclsh8.5 までは "$@"
man tclsh8.6 からは ${1+"$@"} になっています。ただし説明文はそのままでした。
#!/bin/sh
# Next line is comment in Tcl, but not in sh... \
exec tclsh "$0" ${1+"$@"}
( 出典: https://rosettacode.org/wiki/Multiline_shebang )
コメント解釈の違いを利用して複数行に云々は分かります。
ただ気になった箇所が...
${1+"$@"}
これは一体どういう意味合いが込められてるのでしょうか?
Tcl 以外にも Perl とかでも同様の箇所があります。
引数 $1 が unsetなら null
そうでなければ "$1" "$2" "$3" . . . って事ですよね。
それって、ただ "$@" と書くのと違いが分かりません。
ちなみに公式推奨は
man tclsh8.5 までは "$@"
man tclsh8.6 からは ${1+"$@"} になっています。ただし説明文はそのままでした。
691デフォルトの名無しさん
2019/06/18(火) 15:38:35.82ID:3Qr44a8e 良い解説があったので解決しました。
https://www.in-ulm.de/~mascheck/various/bourne_args/
スクリプトに引数を与えない場合、
一部の古いシステムでは "$@" の解釈が
nothing (何もない) ではなく "" (空文字)になってしまうからだそうです。
https://www.in-ulm.de/~mascheck/various/bourne_args/
スクリプトに引数を与えない場合、
一部の古いシステムでは "$@" の解釈が
nothing (何もない) ではなく "" (空文字)になってしまうからだそうです。
692デフォルトの名無しさん
2019/06/18(火) 15:51:31.49ID:CxecAVS8693デフォルトの名無しさん
2019/06/18(火) 16:43:58.58ID:+9W61W8S 参考までに言っておくと、>>691のリンク先にも書いてあるが、
古いzshは ${1+"$@"} は期待したとおりに動かない
完璧な解決方法は、例 eval exec tclsh "\"$0\"" ${1+'"$@"'}
古いzshは ${1+"$@"} は期待したとおりに動かない
完璧な解決方法は、例 eval exec tclsh "\"$0\"" ${1+'"$@"'}
694デフォルトの名無しさん
2019/06/18(火) 17:09:27.93ID:3Qr44a8e なるほど、勝手にアンクォートするようなドジっ子まで考慮しますか....
695デフォルトの名無しさん
2019/06/18(火) 21:39:14.68ID:ADqK1Q88 お約束
・特記なき場合,Bourne ShellもしくはPOSIX準拠のsh互換(というより再現=jシェルが質問・議論の前提です。
つまりシェルスクリプトのシバンは#!/bin/shです。
他のシェル(Bash, Zsh, Ksh, BusyBox sh, DASH, Yash, posh, fish, (t)csh)などの専用機能に依存する場合は,その旨を明示しましょう。
macOS及びGNU/Linuxの利用者は/bin/shの実体がbashなので*特に*注意; 自覚なきbashism――シバンが#!/bin/shなのにBashに依存する構文を使っていませんか?
※ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX shにかなり近い(つまり独自の拡張がほとんどない)DASHですのであまり気にしないでも大丈夫です。
FreeBSDの利用者は/bin/shの実体がashなので注意。
Solaris及びOpenBSDの利用者は/bin/shの実体がKshなので注意。
(t)cshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX (Portable Operating System Interface) に準拠しましょう。
有用なリンクはhttps://en.wikipedia.org/wiki/POSIX末節などを参照。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドの仕様を閲覧できます。また,コマンドだけでなく,ファイルその他の仕様も閲覧できます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh,次点でDebianなどに搭載されているDASH。
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・Unixにはシェルスクリプトに便利な小さなコマンド類がいろいろあります。
「並び換え (sort(1))」「検索 (grep(1))」等々。
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合,Bourne ShellもしくはPOSIX準拠のsh互換(というより再現=jシェルが質問・議論の前提です。
つまりシェルスクリプトのシバンは#!/bin/shです。
他のシェル(Bash, Zsh, Ksh, BusyBox sh, DASH, Yash, posh, fish, (t)csh)などの専用機能に依存する場合は,その旨を明示しましょう。
macOS及びGNU/Linuxの利用者は/bin/shの実体がbashなので*特に*注意; 自覚なきbashism――シバンが#!/bin/shなのにBashに依存する構文を使っていませんか?
※ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX shにかなり近い(つまり独自の拡張がほとんどない)DASHですのであまり気にしないでも大丈夫です。
FreeBSDの利用者は/bin/shの実体がashなので注意。
Solaris及びOpenBSDの利用者は/bin/shの実体がKshなので注意。
(t)cshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX (Portable Operating System Interface) に準拠しましょう。
有用なリンクはhttps://en.wikipedia.org/wiki/POSIX末節などを参照。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドの仕様を閲覧できます。また,コマンドだけでなく,ファイルその他の仕様も閲覧できます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh,次点でDebianなどに搭載されているDASH。
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・Unixにはシェルスクリプトに便利な小さなコマンド類がいろいろあります。
「並び換え (sort(1))」「検索 (grep(1))」等々。
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
696デフォルトの名無しさん
2019/06/22(土) 11:26:37.15ID:RW0mnOsC bashしか使ったことないけど下手に汎用性を意識してshで書くと裏目に出るってことか
某原理主義者涙目だなそりゃ
某原理主義者涙目だなそりゃ
697デフォルトの名無しさん
2019/06/22(土) 14:23:45.59ID:rnpNzk5p 裏目ってなんの話?
698デフォルトの名無しさん
2019/06/22(土) 17:23:54.76ID:QCRIg0Bb 以前(といっても10年以上前)は汎用性を考えて、
ブレース展開とかを使わずに書くようなこともしてたけど、
今はもうbashベッタリな書き方をするようになったわ。
それで困ったことはなかったし。
ブレース展開とかを使わずに書くようなこともしてたけど、
今はもうbashベッタリな書き方をするようになったわ。
それで困ったことはなかったし。
699デフォルトの名無しさん
2019/06/22(土) 17:26:21.61ID:rnpNzk5p dashで動かないから困ってるんだが・・・
700デフォルトの名無しさん
2019/06/22(土) 17:48:50.05ID:7bhVGeaO macはzshになるんだってなw
701デフォルトの名無しさん
2019/06/22(土) 17:59:35.28ID:rnpNzk5p702デフォルトの名無しさん
2019/06/22(土) 20:03:08.93ID:UkgQSivT zshとの比較ではbashが遅いみたいだけど
703デフォルトの名無しさん
2019/06/22(土) 20:43:07.17ID:nLud9E0Q zshは関数呼び出しが遅いんだよね
704デフォルトの名無しさん
2019/06/22(土) 21:47:38.28ID:wZKOjh5O 2倍遅いくらい?
システムコールでのシステム内滞在(?)の方は4倍弱かかってんのね。なんらかのシステムコールの呼び出し回数が多いのか
システムコールでのシステム内滞在(?)の方は4倍弱かかってんのね。なんらかのシステムコールの呼び出し回数が多いのか
705デフォルトの名無しさん
2019/06/22(土) 21:55:26.50ID:wZKOjh5O 4倍どころじゃないなwなんだろ
706デフォルトの名無しさん
2019/06/22(土) 22:48:15.57ID:nLud9E0Q707デフォルトの名無しさん
2019/06/23(日) 00:33:42.02ID:T9PQd+F5 シェルスクリプトというより対話シェルの話題なんだけど
Kshを「業務上 仕方無く(AIX案件とか)」とかではなく使ってる人っています?
今までBashを対話シェルに使ってきたけどKshもかなり便利そうだし何より高速らしいので興味はある
公式サイト(http://www.kornshell.com/)もあってドキュメントも充実してそうだから使ってみたくはあるんだけど
実際に令和にもなってKshを常用してる人がいるのか知りたい。
Kshを「業務上 仕方無く(AIX案件とか)」とかではなく使ってる人っています?
今までBashを対話シェルに使ってきたけどKshもかなり便利そうだし何より高速らしいので興味はある
公式サイト(http://www.kornshell.com/)もあってドキュメントも充実してそうだから使ってみたくはあるんだけど
実際に令和にもなってKshを常用してる人がいるのか知りたい。
708デフォルトの名無しさん
2019/06/23(日) 01:41:24.67ID:ZvVZ9R+J bashですら「業務上 仕方無く(Linux案件とか)」、だなあ
AIXで生活できるような金持ちっているのかねw
AIXで生活できるような金持ちっているのかねw
709デフォルトの名無しさん
2019/06/23(日) 08:23:09.41ID:EWmWLeCI 私は業務上の制限がないので、自分の意志で bash を使っているけどね
不便を感じたことは一度もない
不便を感じたことは一度もない
710デフォルトの名無しさん
2019/06/23(日) 08:40:08.51ID:ZvVZ9R+J お題はkshで生活してる人は?なのにbashで不便がないとか言われても可哀想だ
711デフォルトの名無しさん
2019/06/23(日) 09:17:09.53ID:fwFAut7X for でループすると遅いから、while を使えばよい
712デフォルトの名無しさん
2019/06/23(日) 20:48:21.80ID:Hk4wLzeC シェルスクリプトで遅いと感じるのなら
それはシェルスクリプト向きではないということだ
それはシェルスクリプト向きではないということだ
713デフォルトの名無しさん
2019/06/23(日) 21:03:39.97ID:TZygGBwZ シェルスクリプトしかできないんだろう。選択肢がそれ唯一という
714デフォルトの名無しさん
2019/06/23(日) 21:54:21.81ID:WHM6Ibwm 辛くなったら違う言語にも手を伸す機会が訪れた と捉えましょう
715デフォルトの名無しさん
2019/06/23(日) 22:23:28.14ID:26vacGY+ ぼくなんか手作業より速ければそれで満足するぜ?
716デフォルトの名無しさん
2019/06/23(日) 23:30:33.10ID:qRDZMtxU テキストファイルごにょごにょするときはシェルスクリプト一択
717デフォルトの名無しさん
2019/06/23(日) 23:42:25.49ID:T9PQd+F5 なんか寧ろ
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
718デフォルトの名無しさん
2019/06/24(月) 00:09:49.32ID:JSF3ka2M719デフォルトの名無しさん
2019/06/24(月) 08:34:33.19ID:Ih+U6NjR sed, awk, perl でほとんどの場合は事足りるね
720デフォルトの名無しさん
2019/06/24(月) 09:13:55.59ID:XM+cNyeI awk使うならsedいらんやろ
perl使うならawkいらんやろ
perl使うならawkいらんやろ
721デフォルトの名無しさん
2019/06/24(月) 09:16:06.21ID:d7e7JOi5 awkは書かねえ
たった1行
たった1行
722デフォルトの名無しさん
2019/06/24(月) 09:26:43.54ID:Ih+U6NjR 最近は ruby も使ってるな
だからって ruby 以外全部いらんとか言わないけどなw
だからって ruby 以外全部いらんとか言わないけどなw
723デフォルトの名無しさん
2019/06/24(月) 09:54:11.13ID:GG24ezzu シェルスクリプトと言いながら、ほとんどをawk使って実装しているのを見ると
お前大したことないなって思ってしまう。
お前大したことないなって思ってしまう。
724デフォルトの名無しさん
2019/06/24(月) 13:17:34.61ID:a0F4XMAJ awk は、CSV が使えないだろ
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
725デフォルトの名無しさん
2019/06/24(月) 13:33:16.85ID:c6qVqrI9 まあ適材適所ですよねー
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
726デフォルトの名無しさん
2019/06/24(月) 13:39:12.42ID:O6cXrA2h GNU awk なら組込み変数 FPAT(Field PATtern) を使う方法が
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
727デフォルトの名無しさん
2019/06/24(月) 14:17:45.54ID:ZKJigLEQ 素のwindowsで正規表現パターンの置換コマンドを使おうとする場合、
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
728デフォルトの名無しさん
2019/06/24(月) 14:20:32.48ID:GG24ezzu WSLの(Ubuntuの)sedやろ
729デフォルトの名無しさん
2019/06/24(月) 17:10:03.02ID:qnOmIbRW いずれにしてもPython・Ruby・Perlを中途半端に知ってるせいで
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
730デフォルトの名無しさん
2019/06/24(月) 19:20:37.72ID:lyh6bIzY >>727
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
731デフォルトの名無しさん
2019/06/24(月) 19:42:19.51ID:hXFbATXB シェルスクリプトでは、コマンドが別途必要ということからくる互換性を考えると、
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
732デフォルトの名無しさん
2019/06/24(月) 19:44:29.99ID:hXFbATXB > スプリクト
自分でこれ何?とか思ったわw
自分でこれ何?とか思ったわw
733デフォルトの名無しさん
2019/06/24(月) 19:52:23.47ID:DDT4XoH6 バッド・スプリクト
734デフォルトの名無しさん
2019/06/24(月) 20:10:18.30ID:SYnG+fYe735デフォルトの名無しさん
2019/06/24(月) 20:16:04.28ID:yIlGaHve ぼくなんてほかのひとに仕事取られないように超絶技巧スクリプト作ってるぜ?
736デフォルトの名無しさん
2019/06/24(月) 20:20:52.93ID:SYnG+fYe >>735
どんなの?みてみたい
どんなの?みてみたい
737デフォルトの名無しさん
2019/06/24(月) 20:53:55.73ID:Ih+U6NjR こうしてメンテ不能なものが増えていく
そういうのは個人の趣味でやってくれ
そういうのは個人の趣味でやってくれ
738デフォルトの名無しさん
2019/06/24(月) 21:07:51.65ID:4+LiJo6+ sed 's/ /_/g' の空白を強調するために
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
739デフォルトの名無しさん
2019/06/24(月) 22:00:43.72ID:qnOmIbRW 「コマンドを別途用意する必要がある」からシェルスクリプトは不利っておかしくね?
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
740デフォルトの名無しさん
2019/06/24(月) 23:38:29.17ID:d7e7JOi5 C言語ソースの方がはるかにポータビリティが高いし対応できる人材も豊富だよな。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
741731
2019/06/25(火) 00:46:35.21ID:U26iaC7q >>739
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
742デフォルトの名無しさん
2019/06/25(火) 00:57:21.48ID:5X/+rI3v でも既存のコマンドの組み合わせでできるのに
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
743デフォルトの名無しさん
2019/06/25(火) 01:01:17.89ID:DXMPLOPq744デフォルトの名無しさん
2019/06/25(火) 01:04:49.56ID:5X/+rI3v C言語には機種依存する部分を、C言語から排除してるから
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
745デフォルトの名無しさん
2019/06/25(火) 01:58:59.20ID:yYWVi1kF まだgrepとsedとawkの基本が使えるようになった程度だけど確かに万能感あるわ
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
746デフォルトの名無しさん
2019/06/25(火) 02:41:27.82ID:DXMPLOPq747デフォルトの名無しさん
2019/06/25(火) 02:42:31.60ID:5X/+rI3v Perlはプログラム言語だよ
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
748デフォルトの名無しさん
2019/06/25(火) 02:43:29.91ID:5X/+rI3v749デフォルトの名無しさん
2019/06/25(火) 05:16:39.60ID:DXMPLOPq >>742
これ。
これ。
750デフォルトの名無しさん
2019/06/25(火) 08:12:25.16ID:7F89fU7n awkがプログラミング言語でないとでも?
751デフォルトの名無しさん
2019/06/25(火) 19:07:36.51ID:SVEcKi8R シェルスクリプトでファイル走査して、
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
752デフォルトの名無しさん
2019/06/25(火) 20:06:41.52ID:fN+iFfQl シェルスクリプトでごりごり書いたら出力結果でるまで数十秒でるようになったんで
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
753デフォルトの名無しさん
2019/06/25(火) 20:10:24.39ID:Y04/VZ6Y754デフォルトの名無しさん
2019/06/25(火) 20:20:08.32ID:cs2C/fkq >>752
パターンマッチ使えよ
パターンマッチ使えよ
755デフォルトの名無しさん
2019/06/25(火) 20:23:39.41ID:Y04/VZ6Y awk の部分は cut などに分配すると並列化で早くなるかもね
https://qiita.com/8x9/items/f1156503694d3683e78d
https://qiita.com/8x9/items/f1156503694d3683e78d
756デフォルトの名無しさん
2019/06/25(火) 20:24:51.66ID:cs2C/fkq >>753
それの遅い原因はわかっていて、ループの中でコマンドを呼び出しているから
yashは浮動小数点数が使えるから、簡単にコマンド呼び出しをなくせるし
シェルスクリプト用の浮動小数点数ライブラリがあればもっと高速化できる
もちろん他の言語よりかは遅くなるが、逆に言えば少数を使わない処理は
シェルスクリプトでも十分速い
それの遅い原因はわかっていて、ループの中でコマンドを呼び出しているから
yashは浮動小数点数が使えるから、簡単にコマンド呼び出しをなくせるし
シェルスクリプト用の浮動小数点数ライブラリがあればもっと高速化できる
もちろん他の言語よりかは遅くなるが、逆に言えば少数を使わない処理は
シェルスクリプトでも十分速い
757デフォルトの名無しさん
2019/06/25(火) 21:43:54.45ID:NEREV216 そこまでシェルスクリプトに拘るのはなんでだろ。まあスレ的にはいいけど
758デフォルトの名無しさん
2019/06/25(火) 21:57:45.49ID:DXMPLOPq 別に拘ってないよ。
前にも言ったけど、寧ろシェルスクリプトを「使わない」ことに必死な人物の方が多く見受けられる
そういう人々はPythonやRubyやらは便利で何でもできると思ってるようだが 実のところその殆どの機能はシェルスクリプトで十分まかなえる
しかもUnix系OS(これは世界で最も広く使われているOSの一つ)には既定でPythonやRubyはないがPOSIX環境ならある、というようなものもかなりある。
前にも言ったけど、寧ろシェルスクリプトを「使わない」ことに必死な人物の方が多く見受けられる
そういう人々はPythonやRubyやらは便利で何でもできると思ってるようだが 実のところその殆どの機能はシェルスクリプトで十分まかなえる
しかもUnix系OS(これは世界で最も広く使われているOSの一つ)には既定でPythonやRubyはないがPOSIX環境ならある、というようなものもかなりある。
759デフォルトの名無しさん
2019/06/25(火) 22:12:19.75ID:NEREV216 それが拘っているというのだよ、別にいいじゃん他人の好き好みなら
たんなるグルー言語としてしか使わないのがいても当たり前、グルー言語の発祥元がシェル=シェルスクリプトなんだし
無理して、技巧的にならざるを得ないシェルスクリプトでやりたくないと思うのがいても普通だろうと思うけど
その最後のもそんな窮屈な環境を持ち出さなければ、持論が弱いもしくはやはりこだわりたいだけだなと思うだけだな。世間一般的にそんな環境ってどれだけあるんだか
たんなるグルー言語としてしか使わないのがいても当たり前、グルー言語の発祥元がシェル=シェルスクリプトなんだし
無理して、技巧的にならざるを得ないシェルスクリプトでやりたくないと思うのがいても普通だろうと思うけど
その最後のもそんな窮屈な環境を持ち出さなければ、持論が弱いもしくはやはりこだわりたいだけだなと思うだけだな。世間一般的にそんな環境ってどれだけあるんだか
760デフォルトの名無しさん
2019/06/25(火) 22:14:13.67ID:cs2C/fkq こだわるってのはシェルスクリプトでやるのが難しいのをシェルスクリプトでやることであって
シェルスクリプトでやるのが簡単なことを、わざわざ他の言語で長いコード書いてやるのは
単にシェルスクリプトが使えないだけ
シェルスクリプトでやるのが簡単なことを、わざわざ他の言語で長いコード書いてやるのは
単にシェルスクリプトが使えないだけ
761デフォルトの名無しさん
2019/06/25(火) 22:18:25.41ID:NEREV216 それで?誰のこと言っているの?スレにではないどこぞのブログとかの?
そんなことことで言って、なんなの?まさか、シェルスクリプト使える俺ってわけじゃないんでしょ?
そんなことことで言って、なんなの?まさか、シェルスクリプト使える俺ってわけじゃないんでしょ?
762デフォルトの名無しさん
2019/06/25(火) 22:35:37.53ID:T59Fmr+u >>758
使うとか使わないとか、どちらかに「必死」とか考えちゃうほうがおかしくないか?
本人が使いやすいと思う使い方を、とやかくいうことでもないでしょ。
Windowsで普段PythonやRubyを使ってる人(それなりの利用者がいる)が、
たまたま別の*nixの環境を使うことになった場合、
慣れないシェルスクリプトを使うことより使い慣れた各種言語を使うことだって選択肢としてあり得る。
たとえ、自己満足でそれを選択したとしても、それはそれで否定されるようなことじゃないよね。
使うとか使わないとか、どちらかに「必死」とか考えちゃうほうがおかしくないか?
本人が使いやすいと思う使い方を、とやかくいうことでもないでしょ。
Windowsで普段PythonやRubyを使ってる人(それなりの利用者がいる)が、
たまたま別の*nixの環境を使うことになった場合、
慣れないシェルスクリプトを使うことより使い慣れた各種言語を使うことだって選択肢としてあり得る。
たとえ、自己満足でそれを選択したとしても、それはそれで否定されるようなことじゃないよね。
763デフォルトの名無しさん
2019/06/25(火) 22:37:43.25ID:cs2C/fkq × 自己満足でそれを選択したとしても、
○ シェルスクリプトが使えない能力不足で選択しても
だろ?
○ シェルスクリプトが使えない能力不足で選択しても
だろ?
764デフォルトの名無しさん
2019/06/25(火) 22:49:52.60ID:T59Fmr+u だから、どちらでもいいと言ってるんだけど、わからんかなぁ。
765デフォルトの名無しさん
2019/06/25(火) 23:09:53.71ID:NEREV216 わざわざそんな変な訂正するくらいシェルスクリプトを使えるのがよほど自慢らしい
話にはならないな、このスレ見てるのはシェルスクリプトが使える人だろうというのに
話にはならないな、このスレ見てるのはシェルスクリプトが使える人だろうというのに
766デフォルトの名無しさん
2019/06/25(火) 23:40:27.61ID:DXMPLOPq767デフォルトの名無しさん
2019/06/26(水) 02:56:40.90ID:bFZBAYMT JCL書けてもCOBOL書けなきゃ所詮使えない奴
768デフォルトの名無しさん
2019/06/26(水) 04:39:11.67ID:A3AE1MVC JCLとかCOBOLってPCで使えるんだっけ?
769デフォルトの名無しさん
2019/06/26(水) 05:53:32.15ID:5bijRuYR COBOLは使える
JCLは意味による
JCLは意味による
770デフォルトの名無しさん
2019/06/26(水) 06:15:49.88ID:278w9ub/ シェルスクリプト書けてもC書けなきゃ所詮使えない奴
771デフォルトの名無しさん
2019/06/26(水) 08:58:30.18ID:qk5ECIA8 女子中学生Love
772デフォルトの名無しさん
2019/06/26(水) 11:09:09.74ID:+23jdxl3 例えば、環境変数PATH を、パス区切り文字で区切って、1行ずつ表示したい
PowerShell なら、
$env:Path.split( ";" )
Ruby なら、
echo $PATH | ruby -ne 'puts $_.split( ":" )'
シェルスクリプトなら、
echo $PATH | tr : "\n"
tr で変換するのが、しっくりこない!
ただ、区切り文字で区切って、1行ずつ表示したいだけ!
シェルスクリプトで、簡単・可読性が高い、書き方があるかね?
PowerShell なら、
$env:Path.split( ";" )
Ruby なら、
echo $PATH | ruby -ne 'puts $_.split( ":" )'
シェルスクリプトなら、
echo $PATH | tr : "\n"
tr で変換するのが、しっくりこない!
ただ、区切り文字で区切って、1行ずつ表示したいだけ!
シェルスクリプトで、簡単・可読性が高い、書き方があるかね?
773デフォルトの名無しさん
2019/06/26(水) 11:39:42.18ID:278w9ub/ bashなら echo -e ${PATH//:/\\n}
これなら tr のほうが可読性いいよな
これなら tr のほうが可読性いいよな
774デフォルトの名無しさん
2019/06/26(水) 12:27:41.49ID:A3AE1MVC IFS=:
for p in $PATH; do
echo "$p"
done
for p in $PATH; do
echo "$p"
done
775デフォルトの名無しさん
2019/06/26(水) 12:29:22.59ID:A3AE1MVC trは遅い。 ${PATH//:/\\n} は bash依存
776デフォルトの名無しさん
2019/06/26(水) 12:32:02.93ID:A3AE1MVC777デフォルトの名無しさん
2019/06/26(水) 14:20:31.53ID:MBtdxCbX また出たよ否定からのヤツ
778デフォルトの名無しさん
2019/06/26(水) 15:17:24.20ID:4AX1EN8S >>776
おお!すごい。
これはPOSIX準拠してるからどのOSでも(しかもPowerShellやRubyみたいな標準化されてない言語が入ってないUnix系OSですら)使える。
しかもIFSは「Internal Filed Separator」という意味で,それの値を変えるということは
「区切り文字を変える」ことを明示できる。
しかも余計な外部コマンドを使ってないから早い。
おお!すごい。
これはPOSIX準拠してるからどのOSでも(しかもPowerShellやRubyみたいな標準化されてない言語が入ってないUnix系OSですら)使える。
しかもIFSは「Internal Filed Separator」という意味で,それの値を変えるということは
「区切り文字を変える」ことを明示できる。
しかも余計な外部コマンドを使ってないから早い。
779デフォルトの名無しさん
2019/06/26(水) 15:23:24.08ID:4AX1EN8S もちろん時と場合によってPythonやC#を使ったりするけど,それでもシェルスクリプトを一番に考える理由って,規格と実装とが綺麗に分かれてることなんだよね。
PythonやC#にも一応規格というか標準はあるけど,その実装は公式のものとあと二つ三つくらいしかない。
シェルスクリプトにはPOSIX標準という「私は実装しません。この文書を読んで好きに実装して下さい」という素晴しい哲学の規格-実装の仕組みがある。
そのお陰で数十もの個々のPOSIXシェル実装があるから,様々な機械で動かせる。PDP-11用のC#コンパイラなんてないでしょ?
まあ複雑なこと(XMLパースとか排他処理とか)やろうとすると途端に面倒なことになるので,そういう時はPythonやC#に逃げるけどw
PythonやC#にも一応規格というか標準はあるけど,その実装は公式のものとあと二つ三つくらいしかない。
シェルスクリプトにはPOSIX標準という「私は実装しません。この文書を読んで好きに実装して下さい」という素晴しい哲学の規格-実装の仕組みがある。
そのお陰で数十もの個々のPOSIXシェル実装があるから,様々な機械で動かせる。PDP-11用のC#コンパイラなんてないでしょ?
まあ複雑なこと(XMLパースとか排他処理とか)やろうとすると途端に面倒なことになるので,そういう時はPythonやC#に逃げるけどw
780デフォルトの名無しさん
2019/06/26(水) 15:23:55.57ID:4AX1EN8S あ,「今時PDP-11なんて使わねーよ」なんていう例えという概念が分かっていないツッコミはなしで。
781デフォルトの名無しさん
2019/06/26(水) 15:38:30.86ID:A3AE1MVC782デフォルトの名無しさん
2019/06/26(水) 16:49:32.75ID:4AX1EN8S >>781
printfが外部コマンドのシェルがあるとは知らなんだ。
たしかに特殊組込コマンド(必ずシェルに組み込まなくてはいけないコマンド)一覧
http://pubs.opengroup.org/onlinepubs/9699919799/idx/sbi.html
にはprintfはないな。
printfが外部コマンドのシェルがあるとは知らなんだ。
たしかに特殊組込コマンド(必ずシェルに組み込まなくてはいけないコマンド)一覧
http://pubs.opengroup.org/onlinepubs/9699919799/idx/sbi.html
にはprintfはないな。
783デフォルトの名無しさん
2019/06/26(水) 17:23:49.84ID:A3AE1MVC >>782
それらはシェルに組み込まないと実現不可能なものだからね
カレントシェルの状態を変更・取得するものだから外部プロセスではできない。
それ以外は外部コマンドでいいわけだよ。
古いzshもprintfはビルトインではない
それらはシェルに組み込まないと実現不可能なものだからね
カレントシェルの状態を変更・取得するものだから外部プロセスではできない。
それ以外は外部コマンドでいいわけだよ。
古いzshもprintfはビルトインではない
784デフォルトの名無しさん
2019/06/26(水) 19:36:40.66ID:Y3pTO8/n 速度問題にするならプロファイラ欲しいよね
ボトルネック探すために
どんなツールを使っている?
ボトルネック探すために
どんなツールを使っている?
785デフォルトの名無しさん
2019/06/26(水) 19:56:32.05ID:A3AE1MVC 基本はtimeだな。あとはstrace使ってfork数の確認とか
シェルスクリプトが遅くなる原因はforkが大半なので
これを抑えるようにすると速くなる。
あとzshだとzprofというのが使える
シェルスクリプトが遅くなる原因はforkが大半なので
これを抑えるようにすると速くなる。
あとzshだとzprofというのが使える
786デフォルトの名無しさん
2019/06/26(水) 20:56:42.18ID:4AX1EN8S ていうかシェルスクリプトで速度を気にするのが間違いでは?w
早い処理速度を求めるんであればCで書けばいい。
早い処理速度を求めるんであればCで書けばいい。
787デフォルトの名無しさん
2019/06/26(水) 21:01:41.99ID:A3AE1MVC 別に間違いではないよ。
シェルスクリプトで実装るのが適切な問題を
遅いからという理由だけで、他の言語を使わなくて良くなる。
クソコード書いておいて、シェルスクリプトは遅い。
だからCで書くとか言われたらバカみたいって思うでしょ
シェルスクリプトで実装るのが適切な問題を
遅いからという理由だけで、他の言語を使わなくて良くなる。
クソコード書いておいて、シェルスクリプトは遅い。
だからCで書くとか言われたらバカみたいって思うでしょ
788デフォルトの名無しさん
2019/06/26(水) 21:24:26.72ID:4AX1EN8S >>787
> クソコード書いておいて、シェルスクリプトは遅い。
> だからCで書くとか言われたら
いや,それは単純にそんなコードを書くバカの問題であって,
プロファイラが必要になるくらい速度に厳しいプログラムを
シェルスクリプトで書いてしまえば,恐らく誰であろうとCより遅くなる。
だから「シェルスクリプトは遅い」というのは
「本質的に遅く,Cで書かないと速くならないプログラムを無理矢理シェルスクリプトで実装してる」
or
「シェルスクリプトの書き方を知らないがネット記事のコピペを切り貼りして作った凡コード」
の二通りに分かれる。
結局「バカでない人間がシェルスクリプトの速度をプロファイラを使ってまで気にする」という事態は発生しえない。
> クソコード書いておいて、シェルスクリプトは遅い。
> だからCで書くとか言われたら
いや,それは単純にそんなコードを書くバカの問題であって,
プロファイラが必要になるくらい速度に厳しいプログラムを
シェルスクリプトで書いてしまえば,恐らく誰であろうとCより遅くなる。
だから「シェルスクリプトは遅い」というのは
「本質的に遅く,Cで書かないと速くならないプログラムを無理矢理シェルスクリプトで実装してる」
or
「シェルスクリプトの書き方を知らないがネット記事のコピペを切り貼りして作った凡コード」
の二通りに分かれる。
結局「バカでない人間がシェルスクリプトの速度をプロファイラを使ってまで気にする」という事態は発生しえない。
789デフォルトの名無しさん
2019/06/27(木) 04:28:29.87ID:SGv/MKem プロファイラが必要になったからって、速度に厳しいわけじゃないぞ。
プロファイラってのは速度を追求するものではなく、ボトルネックを探すものだ。
シェルスクリプトでもちゃんと使っていれば、実用に耐えられないほど
遅くなるなんてことはないんだが
よくわかってないやつが使うと遅くなる。
大抵はループの中で大量のコマンド呼び出しをしてるからなんだけどな。
プロファイラってのは速度を追求するものではなく、ボトルネックを探すものだ。
シェルスクリプトでもちゃんと使っていれば、実用に耐えられないほど
遅くなるなんてことはないんだが
よくわかってないやつが使うと遅くなる。
大抵はループの中で大量のコマンド呼び出しをしてるからなんだけどな。
790デフォルトの名無しさん
2019/06/27(木) 17:54:22.07ID:vYBmK8+j perlのない環境で、grepやsed使って、
ついつい\d、\wとかを使って、困惑することしばし…
わかっちゃいるんだけど、よく忘れる orz
grep(-P)のように、sedも対応してくれんかのぉ
まぁ、気づかなきゃ同じことだけどw
ついつい\d、\wとかを使って、困惑することしばし…
わかっちゃいるんだけど、よく忘れる orz
grep(-P)のように、sedも対応してくれんかのぉ
まぁ、気づかなきゃ同じことだけどw
791デフォルトの名無しさん
2019/06/27(木) 18:09:55.21ID:Sx1H26YL シェルスクリプトと関係ないな。
コマンドの問題だし。
コマンドの問題だし。
792デフォルトの名無しさん
2019/06/27(木) 18:25:20.18ID:HOV3qatT だったらこのスレいらないな
793デフォルトの名無しさん
2019/06/27(木) 18:58:25.19ID:YlgL60Eu いまだに¥を平気で書いているのにとも
\使える書けるんだから\にしろ、そこからだw
って、(一部)Linuxで採用しているTakaoフォントのグリフが円記号なんだよな。元々の(古い)IPAがだが
\使える書けるんだから\にしろ、そこからだw
って、(一部)Linuxで採用しているTakaoフォントのグリフが円記号なんだよな。元々の(古い)IPAがだが
794デフォルトの名無しさん
2019/06/27(木) 19:11:05.80ID:pgi+u0Sx どんな環境でも動くシェルスクリプトって都市伝説だよね?
POSIX準拠にこだわったりってムダなことだったんだな。
どうせ可搬性が幻なら、あるがままを受け入れよう。
POSIX準拠にこだわったりってムダなことだったんだな。
どうせ可搬性が幻なら、あるがままを受け入れよう。
795デフォルトの名無しさん
2019/06/27(木) 19:40:57.78ID:Sx1H26YL 俺が作ったのはどの環境でも動いてるけど?
796デフォルトの名無しさん
2019/06/27(木) 20:22:07.56ID:gzj/T4br 僕が作ったシェルスクリプトも どの環境でも動いてくれています(KONAMI)
797デフォルトの名無しさん
2019/06/28(金) 13:06:45.81ID:hRIfy8PX798デフォルトの名無しさん
2019/06/28(金) 13:27:15.18ID:LKtIca5E >>739 のリンク先にあるPOSIXで必須とされるコマンド(grepやsedもこれに含まれる)の問題が、
シェルスクリプトと関係ないということでスレチというのなら、
このスレの存在意義が相当薄れることは確か。
シェルスクリプトと関係ないということでスレチというのなら、
このスレの存在意義が相当薄れることは確か。
799デフォルトの名無しさん
2019/06/28(金) 15:20:25.88ID:p9xekXNc >>797
じゃあお前は外部コマンド使用禁止な
じゃあお前は外部コマンド使用禁止な
800デフォルトの名無しさん
2019/06/28(金) 15:23:54.26ID:p9xekXNc 外部コマンド総合スレでも立てるか
でシェルスクリプトはスレチなw
でシェルスクリプトはスレチなw
801デフォルトの名無しさん
2019/06/28(金) 15:37:17.44ID:hRIfy8PX802デフォルトの名無しさん
2019/06/28(金) 15:40:05.21ID:p9xekXNc 反論できなくなるとアスペ認定か
どっちがアスペだよ
どっちがアスペだよ
803デフォルトの名無しさん
2019/06/28(金) 16:03:38.70ID:zQSIyUJ5 お前のログインシェルをfishにしてやろうか
804デフォルトの名無しさん
2019/06/28(金) 16:07:31.10ID:xFtlJ1q/ ww
805デフォルトの名無しさん
2019/06/28(金) 16:33:23.58ID:4HrFS9y+ いいやんfish
何で笑い物になってんの??
何で笑い物になってんの??
806デフォルトの名無しさん
2019/06/28(金) 16:45:37.81ID:hRIfy8PX807デフォルトの名無しさん
2019/06/28(金) 17:01:53.99ID:p9xekXNc808デフォルトの名無しさん
2019/06/28(金) 17:43:39.21ID:iEcNYkGc かなり馬鹿そうだな
809デフォルトの名無しさん
2019/06/28(金) 18:11:19.47ID:T2T4CcZF fishってw
810デフォルトの名無しさん
2019/06/28(金) 18:56:40.55ID:4HrFS9y+ シェルスクリプトが本当にイケてたらfishスクリプトだのVスクリプトだの出てこない。
811デフォルトの名無しさん
2019/06/28(金) 19:09:05.16ID:Ul5nd1dv C言語が本当にイケてたらPerlなんて出てこない
↑好きな言語に変更してください
↑好きな言語に変更してください
812デフォルトの名無しさん
2019/06/28(金) 19:11:15.58ID:Ul5nd1dv fishはシェルとして使うのは良いけど、
/bin/shでも/bin/bashでも動かないから
スクリプトとしては使えないんだよな
/bin/shでも/bin/bashでも動かないから
スクリプトとしては使えないんだよな
813デフォルトの名無しさん
2019/06/28(金) 19:12:15.60ID:Ul5nd1dv 良い言語が必ずしも普及するわけじゃなくて
結局は互換性、標準準拠のものが最後には残るんだよね。
JavaScriptとaltJSの関係でもよくわかった
結局は互換性、標準準拠のものが最後には残るんだよね。
JavaScriptとaltJSの関係でもよくわかった
814デフォルトの名無しさん
2019/06/28(金) 19:54:48.75ID:5SvDrToF つまりTypeScriptもいずれ滅びると。
815デフォルトの名無しさん
2019/06/28(金) 20:01:22.66ID:Ul5nd1dv816デフォルトの名無しさん
2019/06/28(金) 20:48:45.94ID:T2T4CcZF 男はCでwebアセンブラ書け
817デフォルトの名無しさん
2019/06/28(金) 21:33:38.23ID:T2T4CcZF ていうかそんなに互換性やら保守性やら気にするんだったら黙ってPOSIXに準拠しとけよとは思うけどね。
818デフォルトの名無しさん
2019/06/28(金) 21:40:41.84ID:fHg6yLGA POSIXモードもしくはPOSIX準拠をうたっているのが本当か?というとこかな
なにか完璧POSIX準拠それ以上も以下もないってどれだ?dash?
あと、POSIX以前もしくは不備のとかちょっと前の話題でもあったねえ
なにか完璧POSIX準拠それ以上も以下もないってどれだ?dash?
あと、POSIX以前もしくは不備のとかちょっと前の話題でもあったねえ
819デフォルトの名無しさん
2019/06/28(金) 23:19:35.88ID:2yxMx+rx シェルスクリプトの言語仕様なんてたかが知れてるんだから
覚えられないはずがないんだが、それができないのは覚えられないんじゃなくて
シェルプログラミングのプログラミングスタイルを理解できてないってことなんじゃないかな
手続き型というより関数型に近いスタイルだからね
>>818
dash(ash)一択でしょ
debian/ubuntuのデフォルトシェルだし
その他のシェルはPOSIX準拠ではない配列が使えてしまう
覚えられないはずがないんだが、それができないのは覚えられないんじゃなくて
シェルプログラミングのプログラミングスタイルを理解できてないってことなんじゃないかな
手続き型というより関数型に近いスタイルだからね
>>818
dash(ash)一択でしょ
debian/ubuntuのデフォルトシェルだし
その他のシェルはPOSIX準拠ではない配列が使えてしまう
820デフォルトの名無しさん
2019/06/28(金) 23:25:17.84ID:CM5w69Yd なんでshじゃダメなの?いや煽りでなしに。
821デフォルトの名無しさん
2019/06/28(金) 23:28:28.79ID:2yxMx+rx >>820
shの実体は何?
shの実体は何?
822デフォルトの名無しさん
2019/06/28(金) 23:37:24.02ID:CM5w69Yd 知らんけどもともとは何だったの?
823デフォルトの名無しさん
2019/06/28(金) 23:37:32.86ID:GaQSOKcq >>819
dashがたぶん近いんだろうが、POSIX準拠それ以上も以下もないのか本当に?というとこかな
POSIX準拠それ以上も以下もないんだったら、dashで動けば終了、他で動かないのはPOSIX準拠してないからそいつが悪いで済むんだろうなw
dashがたぶん近いんだろうが、POSIX準拠それ以上も以下もないのか本当に?というとこかな
POSIX準拠それ以上も以下もないんだったら、dashで動けば終了、他で動かないのはPOSIX準拠してないからそいつが悪いで済むんだろうなw
824デフォルトの名無しさん
2019/06/28(金) 23:42:51.93ID:GaQSOKcq >>822
/bin/sh の実態がbashだったりkshだったりdashだったりというのが現在
元々のオリジナルのshはアレすぎて現存しないんじゃないかな
オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
という流れじゃなかったかなあ。/bin/sh なんて存在しない、現在
/bin/sh の実態がbashだったりkshだったりdashだったりというのが現在
元々のオリジナルのshはアレすぎて現存しないんじゃないかな
オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
という流れじゃなかったかなあ。/bin/sh なんて存在しない、現在
825デフォルトの名無しさん
2019/06/28(金) 23:51:49.75ID:CM5w69Yd >>824
知らんけど聞く限り/bin/shの指し先が千差万別なのが諸悪の根元なんじゃないの?
どんなにショボくてもオリジナルのsh復興してそれ以外で書いちゃダメってことにすれば?
それで不便があったとしても、それが本来のshでしょ。
わがまま言っちゃいかん。
知らんけど聞く限り/bin/shの指し先が千差万別なのが諸悪の根元なんじゃないの?
どんなにショボくてもオリジナルのsh復興してそれ以外で書いちゃダメってことにすれば?
それで不便があったとしても、それが本来のshでしょ。
わがまま言っちゃいかん。
826デフォルトの名無しさん
2019/06/28(金) 23:54:24.85ID:2yxMx+rx オリジナルのsh = POSIX準拠ではない
改変版のsh = OSとそのバージョンの数だけ存在する(数十種類レベル)
改変版のsh = OSとそのバージョンの数だけ存在する(数十種類レベル)
827デフォルトの名無しさん
2019/06/29(土) 00:00:54.47ID:4wm1mmLB オリジナルのshのソースコード(C言語)
http://x68000.q-e-d.net/~68user/unix/pickup?sh
略
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
略
IF input>0
THEN Ldup(input,INIO);
input=INIO;
FI
略
(C言語)
http://x68000.q-e-d.net/~68user/unix/pickup?sh
略
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
略
IF input>0
THEN Ldup(input,INIO);
input=INIO;
FI
略
(C言語)
829デフォルトの名無しさん
2019/06/29(土) 00:09:28.44ID:Mqz9B8yO >>825
いやいや。POSIX規格の元がshではなくてkshということで、その時点でshは終わってる過去の遺物だろう
言うようなのは sh という別の規格があった方がいいと言っているようなもんだな。POSIXはなぜ作られたのかよーく考えよう
わがままwwてか「何も知らないくせにw」うるせーよっ
いやいや。POSIX規格の元がshではなくてkshということで、その時点でshは終わってる過去の遺物だろう
言うようなのは sh という別の規格があった方がいいと言っているようなもんだな。POSIXはなぜ作られたのかよーく考えよう
わがままwwてか「何も知らないくせにw」うるせーよっ
830デフォルトの名無しさん
2019/06/29(土) 00:10:03.56ID:4wm1mmLB831デフォルトの名無しさん
2019/06/29(土) 00:15:00.86ID:Mqz9B8yO >>827
Bourne さんは Algol68 プログラマであったそうで〜Bourne shell のソース自体も Algol68 風になっており
らしいからまあしょうがないんだろうと思うけど、defineの使い方の説明のサンプルでそういうのを見たことがあるが、まさか実際にというのは、それも有名どころがというはちょっと驚き
Bourne さんは Algol68 プログラマであったそうで〜Bourne shell のソース自体も Algol68 風になっており
らしいからまあしょうがないんだろうと思うけど、defineの使い方の説明のサンプルでそういうのを見たことがあるが、まさか実際にというのは、それも有名どころがというはちょっと驚き
832デフォルトの名無しさん
2019/06/29(土) 00:25:29.35ID:0fRKmc/o POSIX準拠をうたうOSのデフォルトシェルはPOSIX準拠を保証する。
Linuxの場合は/bin/shがこれにあたる。
ディストリによって実体は bash,dashと様々だが、
自身がshの場合はPOSIX互換モードで動作するようになっている。
とはいえ重箱の隅をつつけば、実装が追い付いていない部分はあるがね。
Linuxの場合は/bin/shがこれにあたる。
ディストリによって実体は bash,dashと様々だが、
自身がshの場合はPOSIX互換モードで動作するようになっている。
とはいえ重箱の隅をつつけば、実装が追い付いていない部分はあるがね。
833デフォルトの名無しさん
2019/06/29(土) 00:28:01.49ID:XWmNXWFB 互換と準拠を取り違えてるのか
初期のUNIXだとglobが外部コマンドらしいな
なんで検索機能をこう呼ぶのかよく分かったわ
初期のUNIXだとglobが外部コマンドらしいな
なんで検索機能をこう呼ぶのかよく分かったわ
834デフォルトの名無しさん
2019/06/29(土) 00:53:37.63ID:Mqz9B8yO >>824
>オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
オリジナルのshが機能不足だったり独特だったりで、(cshや)kshやbashやashやzshなどなどが出て乱立する
これはイカんということでPOSIXで規格をkshをベースに作る
ash(dash)は元々オリジナルshの(+ちょっとだけ機能追加した)再実装なので、それにPOSIX準拠という以外の余計なことは(ほとんどあまり)してない
ってとこかな
>オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
オリジナルのshが機能不足だったり独特だったりで、(cshや)kshやbashやashやzshなどなどが出て乱立する
これはイカんということでPOSIXで規格をkshをベースに作る
ash(dash)は元々オリジナルshの(+ちょっとだけ機能追加した)再実装なので、それにPOSIX準拠という以外の余計なことは(ほとんどあまり)してない
ってとこかな
835デフォルトの名無しさん
2019/06/29(土) 02:07:31.33ID:rJpz/Ysh 煮え切らない言い方だな…
そんなことしてるから可搬性なくなるんだよ。
機能不足だろうが独特だろうがそれがsh。
一切追加するな!余計なことするな!
そんなことしてるから可搬性なくなるんだよ。
機能不足だろうが独特だろうがそれがsh。
一切追加するな!余計なことするな!
836デフォルトの名無しさん
2019/06/29(土) 02:49:26.27ID:2GBw6kuy ググってなりもってこいよ、文句言うくらいだったら
文句言う自分では探さないで奇抜な怒りwだけって奇特な人だな
奇抜=あれやこれややる人が多数、そういうのが好まれ使われてるんだから、それを頭から否定する
文句言う自分では探さないで奇抜な怒りwだけって奇特な人だな
奇抜=あれやこれややる人が多数、そういうのが好まれ使われてるんだから、それを頭から否定する
837デフォルトの名無しさん
2019/06/29(土) 02:50:55.42ID:4wm1mmLB だからオリジナルのshだと可搬性がないんだって
838デフォルトの名無しさん
2019/06/29(土) 05:00:31.68ID:tuUcuaq1 「オリジナルのsh」とかいう自分用語で語るのやめてくれない?
839デフォルトの名無しさん
2019/06/29(土) 05:36:56.40ID:4wm1mmLB オリジナルのshという言い方が嫌なら、
最初に作られたshでもいいけど?
最初に作られたshでもいいけど?
840デフォルトの名無しさん
2019/06/29(土) 05:44:09.80ID:4wm1mmLB bash, zsh, ksh, (d)ash, yash, poshのいずれでもないshは可搬性がない
841デフォルトの名無しさん
2019/06/29(土) 06:13:45.36ID:khQF1iKv 文句言うだけが生きがいもしくは言わないと死んじゃうんだろうw
842デフォルトの名無しさん
2019/06/29(土) 07:46:29.87ID:tuUcuaq1 Bourneって「ボーン」って読むの?
843デフォルトの名無しさん
2019/06/29(土) 09:05:01.55ID:e/5j8c1q >>840
独自機能を使ったら可搬性がないのだからbash, zsh, ksh, (d)ash, yash, poshと別れてるのは百害あって一利なし。
bash, zsh, ksh, (d)ash, yash, poshのintersectionを取って新時代のshとし、他は滅ぶべし。
それ以外を使うものは地獄の業火で焼かれるべき。
独自機能を使ったら可搬性がないのだからbash, zsh, ksh, (d)ash, yash, poshと別れてるのは百害あって一利なし。
bash, zsh, ksh, (d)ash, yash, poshのintersectionを取って新時代のshとし、他は滅ぶべし。
それ以外を使うものは地獄の業火で焼かれるべき。
844デフォルトの名無しさん
2019/06/29(土) 09:06:26.66ID:YzN8MsSb bash はどこにでもあるイメージ
845デフォルトの名無しさん
2019/06/29(土) 11:12:01.76ID:XWmNXWFB UNIXでBourne shell誕生
SVR4で軽量版bshのash誕生
Debianで改良版ashのdash誕生
BSDでcsh誕生
cshの便利機能(alias、ジョブ制御)をbashが吸収
改良版cshのtcsh誕生
bshとcshと合わせたksh(ksh88、ksh93)誕生
kshは商用なのでフリー版(pdksh、mksh)誕生
既存シェルをつまみ食いしたbash誕生
改良版bashのzsh誕生
独立系のfish誕生
適当にググったけど種類多くてワロタわ
わざわざashを作った理由やkshが分かれてる理由が分からんが
SVR4で軽量版bshのash誕生
Debianで改良版ashのdash誕生
BSDでcsh誕生
cshの便利機能(alias、ジョブ制御)をbashが吸収
改良版cshのtcsh誕生
bshとcshと合わせたksh(ksh88、ksh93)誕生
kshは商用なのでフリー版(pdksh、mksh)誕生
既存シェルをつまみ食いしたbash誕生
改良版bashのzsh誕生
独立系のfish誕生
適当にググったけど種類多くてワロタわ
わざわざashを作った理由やkshが分かれてる理由が分からんが
846デフォルトの名無しさん
2019/06/29(土) 12:16:50.57ID:L6EEl7gg 可搬性ってそんなに重要か?
そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?
やりすぎると可搬性無くて死ぬだろうけど、各々の身辺環境は異なるのだから
各々が経験に応じて決めればよくね?
echo の引数で -n が使えるか使えないかなんて考えるのやめて10年以上経つわ。
そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?
やりすぎると可搬性無くて死ぬだろうけど、各々の身辺環境は異なるのだから
各々が経験に応じて決めればよくね?
echo の引数で -n が使えるか使えないかなんて考えるのやめて10年以上経つわ。
847デフォルトの名無しさん
2019/06/29(土) 14:11:03.73ID:L6EEl7gg848デフォルトの名無しさん
2019/06/29(土) 14:37:45.71ID:m0/FgwM7 どんどん便利な機能が追加されて良いではないか、みんな好きなの選べば?という人種と
何も変えてはいかん、全てを標準に合わせろ!という人種
大抵の人はその中間なんだろうけど。
bash-5.0 で取り入れられた新機能、一応フォローしておくか (そしてすぐ忘れる) と思うけど
それ積極的に使っていこうぜとは思わないもの。
何も変えてはいかん、全てを標準に合わせろ!という人種
大抵の人はその中間なんだろうけど。
bash-5.0 で取り入れられた新機能、一応フォローしておくか (そしてすぐ忘れる) と思うけど
それ積極的に使っていこうぜとは思わないもの。
849デフォルトの名無しさん
2019/06/29(土) 14:49:39.62ID:khQF1iKv 新機能のうちのいくつかもそのうち当たり前に使うようになってるでしょ。便利であれば
このスレでbash特有とかあるように
このスレでbash特有とかあるように
850デフォルトの名無しさん
2019/06/29(土) 15:04:32.87ID:khQF1iKv >>845
>bshとcshと合わせたksh(ksh88、ksh93)誕生
>kshは商用なのでフリー版(pdksh、mksh)誕生
>既存シェルをつまみ食いしたbash誕生
>改良版bashのzsh誕生
kshとcshを合わせたzshが誕生
じゃないかな。で、
bshにcshの便利なヒストリ(など)を取り込んだkshが誕生
ではないかな
時系列的には
https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2019/05/Evolution-of-Linux-Shells-Types-of-Shells-in-Linux-Edureka-528x280.png
らしい。zshはcshの派生になってるけど正しくはkshからも引くべきだろうね、開発時のメッセージでそう明言してる
>bshとcshと合わせたksh(ksh88、ksh93)誕生
>kshは商用なのでフリー版(pdksh、mksh)誕生
>既存シェルをつまみ食いしたbash誕生
>改良版bashのzsh誕生
kshとcshを合わせたzshが誕生
じゃないかな。で、
bshにcshの便利なヒストリ(など)を取り込んだkshが誕生
ではないかな
時系列的には
https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2019/05/Evolution-of-Linux-Shells-Types-of-Shells-in-Linux-Edureka-528x280.png
らしい。zshはcshの派生になってるけど正しくはkshからも引くべきだろうね、開発時のメッセージでそう明言してる
851デフォルトの名無しさん
2019/06/29(土) 16:07:00.45ID:khQF1iKv ああ、cshではなくてtcshだった
This is a shar file containing zsh, a ksh/tcsh-like shell.
This is a shar file containing zsh, a ksh/tcsh-like shell.
852デフォルトの名無しさん
2019/06/29(土) 16:24:24.49ID:0fRKmc/o853デフォルトの名無しさん
2019/06/29(土) 16:43:46.48ID:tuUcuaq1854デフォルトの名無しさん
2019/06/29(土) 16:53:39.78ID:0fRKmc/o >>853
POSIXは可搬性を高めるための規格なので逆だと思います。
POSIXは可搬性を高めるための規格なので逆だと思います。
855デフォルトの名無しさん
2019/06/29(土) 16:59:43.19ID:/BkVpaGH856デフォルトの名無しさん
2019/06/29(土) 17:05:11.99ID:/BkVpaGH857デフォルトの名無しさん
2019/06/29(土) 17:06:04.22ID:/BkVpaGH858デフォルトの名無しさん
2019/06/29(土) 17:13:24.88ID:/BkVpaGH >>845
> わざわざashを作った理由やkshが分かれてる理由が分からんが
オープンソースではないのでソースコードが公開されない
資産が生かせない
UNIXでBourne shell誕生
○(UNIX)がBourne shell改良、shの亜種○を作る
△(UNIX)が更に改良、shの亜種△を作る
□(UNIX)が更にl改良、shの亜種□を作る
◇(UNIX)が更にl改良、shの亜種◇を作る
UNIX界隈で、shという名前でバージョン番号すら
無いshの亜種が大量に生まれる
そしてshの最終形態でやっとPOSIXに
準拠したかもしれない程度のレベルで互換性がない
> わざわざashを作った理由やkshが分かれてる理由が分からんが
オープンソースではないのでソースコードが公開されない
資産が生かせない
UNIXでBourne shell誕生
○(UNIX)がBourne shell改良、shの亜種○を作る
△(UNIX)が更に改良、shの亜種△を作る
□(UNIX)が更にl改良、shの亜種□を作る
◇(UNIX)が更にl改良、shの亜種◇を作る
UNIX界隈で、shという名前でバージョン番号すら
無いshの亜種が大量に生まれる
そしてshの最終形態でやっとPOSIXに
準拠したかもしれない程度のレベルで互換性がない
859デフォルトの名無しさん
2019/06/29(土) 18:33:44.12ID:pTnnUNQ0860デフォルトの名無しさん
2019/06/29(土) 18:46:06.33ID:/BkVpaGH ああ、訂正 ライセンスがクソだったのでソースが再利用できない
861デフォルトの名無しさん
2019/06/29(土) 19:57:38.97ID:khQF1iKv ということでashは「再実装」なんだなと納得
862デフォルトの名無しさん
2019/06/29(土) 20:03:34.74ID:khQF1iKv あと
誰も Bourne shell の文法がどうなっているかを本当には知らない。ソースコードを調べてみてもほとんど役に立たない。
とかいうのもなんか納得できるな。違うかもだが。そういう時代だったのねと
rcという変わり種の作者がだから酷く言っているだけかと思った。それもあるかもだがw
誰も Bourne shell の文法がどうなっているかを本当には知らない。ソースコードを調べてみてもほとんど役に立たない。
とかいうのもなんか納得できるな。違うかもだが。そういう時代だったのねと
rcという変わり種の作者がだから酷く言っているだけかと思った。それもあるかもだがw
863デフォルトの名無しさん
2019/06/29(土) 20:11:26.48ID:LSJMfKyW >>861
正確に言えば、POSIX以前に作られた、 POSIX準拠してない Bourne shell を廃棄して
POSIX準拠で作り直したということ
(POSIX)シェルを再実装したのは正しいが、Bourne shellそのものを再実装したのではない
正確に言えば、POSIX以前に作られた、 POSIX準拠してない Bourne shell を廃棄して
POSIX準拠で作り直したということ
(POSIX)シェルを再実装したのは正しいが、Bourne shellそのものを再実装したのではない
864デフォルトの名無しさん
2019/06/29(土) 20:16:33.84ID:khQF1iKv865デフォルトの名無しさん
2019/06/29(土) 20:24:08.27ID:khQF1iKv Ash is a reimplementation of the System V shell. Currently it has most
features of that shell, plus some additions. It runs on 4.2 and 4.3BSD,
SystemV releases 1, 2, 3, SystemIII, and perhaps Version 7. Documentation
includes a list of differences, a manpage, and internals documentation.
It has several built-ins and shell functions.
のようだね。最初は。POSIX準拠はその後でという怪しい図のソコは間違っていないような
features of that shell, plus some additions. It runs on 4.2 and 4.3BSD,
SystemV releases 1, 2, 3, SystemIII, and perhaps Version 7. Documentation
includes a list of differences, a manpage, and internals documentation.
It has several built-ins and shell functions.
のようだね。最初は。POSIX準拠はその後でという怪しい図のソコは間違っていないような
866デフォルトの名無しさん
2019/06/29(土) 20:29:32.51ID:LSJMfKyW System V shellの再実装であって、Bourne shellの再実装ではない
867デフォルトの名無しさん
2019/06/29(土) 20:31:23.20ID:LSJMfKyW System V shellはBourne shellを名乗っているのかもしれないが、
オリジナルのBourne shellではない
オリジナルという言い方が気に食わないなら
最初に作られたshと読みかえれ
オリジナルのBourne shellではない
オリジナルという言い方が気に食わないなら
最初に作られたshと読みかえれ
868デフォルトの名無しさん
2019/06/29(土) 20:43:19.37ID:khQF1iKv 別にそこはどうでもいい。てかちょっと見苦しいかなw
869デフォルトの名無しさん
2019/06/29(土) 23:55:59.43ID:tuUcuaq1 >>850
なんか揉めそうだけど、その図のより正確な版を5ch wikiかなにかに作ったらいいかもね。
なんか揉めそうだけど、その図のより正確な版を5ch wikiかなにかに作ったらいいかもね。
870デフォルトの名無しさん
2019/06/30(日) 00:09:13.01ID:wmvzG4iV Bourne Shellに親でも殺されたのか?
871デフォルトの名無しさん
2019/06/30(日) 00:55:36.25ID:1ALBmyOB POSIXに親を殺された奴もいるしなw
872デフォルトの名無しさん
2019/06/30(日) 03:55:44.69ID:rfDMTcnr873デフォルトの名無しさん
2019/06/30(日) 03:59:41.59ID:CMkdrv99 iocall attach user_output file xx
list
iocall attach user_output syn user_i/o
Multicsだとls >xxがこの記述量らしいな
パイプさまさまだわ
list
iocall attach user_output syn user_i/o
Multicsだとls >xxがこの記述量らしいな
パイプさまさまだわ
874デフォルトの名無しさん
2019/06/30(日) 04:34:44.87ID:29vlF+26 どこにパイプが...
875デフォルトの名無しさん
2019/06/30(日) 05:20:49.27ID:uXv60RDl >>872
dashで動けば、他のシェルでも動くよ
dashで動けば、他のシェルでも動くよ
876デフォルトの名無しさん
2019/06/30(日) 09:29:10.65ID:sdmPaDuU シェルスクリプトで可搬性のあるコードを書くのはそもそも無理がある
877デフォルトの名無しさん
2019/06/30(日) 10:28:41.23ID:2juPiYlp >>846
だよな。どこでも動くシェルスクリプトなんて都市伝説だし。
だよな。どこでも動くシェルスクリプトなんて都市伝説だし。
878デフォルトの名無しさん
2019/06/30(日) 10:43:07.31ID:Fo3wYRY8879デフォルトの名無しさん
2019/06/30(日) 16:52:33.33ID:rfDMTcnr >>875,878
なんでスクリプトの構文のみの話になってるの? 可搬性の話がずれてる。
autoconf が作る configure のような、メンテナンス性・可読性皆無だが比較的どこでも動くスクリプトみたいな奴
だと思ってるんだが皆はどういう認識なのよ?
なんでスクリプトの構文のみの話になってるの? 可搬性の話がずれてる。
autoconf が作る configure のような、メンテナンス性・可読性皆無だが比較的どこでも動くスクリプトみたいな奴
だと思ってるんだが皆はどういう認識なのよ?
880デフォルトの名無しさん
2019/06/30(日) 17:13:52.68ID:DWafJWcS シェルの仕様だけの問題じゃなくて、コマンドがOS、バージョンによってまちまち
IPアドレス取得するだけでも大量にバリエーションがあってどうにもならないから、Linuxではifconfigが非推奨になった
IPアドレス取得するだけでも大量にバリエーションがあってどうにもならないから、Linuxではifconfigが非推奨になった
881デフォルトの名無しさん
2019/06/30(日) 18:00:24.49ID:Fo3wYRY8 コマンドもPOSIX準拠のものだけ使うに決まってるじゃん
はい、可搬性ありまーす
rubyでsedを呼び出していて、非POSIXのオプション使ってるから
rubyは可搬性がないとか言われても困るw
この場合可搬性がないのはsed(の非POSIXのオプション)であって
呼び出してる言語(ruby or shell)が可搬性がないわけではない
はい、可搬性ありまーす
rubyでsedを呼び出していて、非POSIXのオプション使ってるから
rubyは可搬性がないとか言われても困るw
この場合可搬性がないのはsed(の非POSIXのオプション)であって
呼び出してる言語(ruby or shell)が可搬性がないわけではない
882デフォルトの名無しさん
2019/06/30(日) 18:38:54.22ID:29vlF+26883デフォルトの名無しさん
2019/06/30(日) 18:47:02.27ID:Fo3wYRY8 はぁ、なんでこんなに頭が悪いんだろう。
「C言語が吐き出すアセンブリ言語」は「どこでも動くアセンブリ言語」じゃないから
C言語は可搬性がないという主張ですかね。
ほんと、頭わりぃ
「C言語が吐き出すアセンブリ言語」は「どこでも動くアセンブリ言語」じゃないから
C言語は可搬性がないという主張ですかね。
ほんと、頭わりぃ
884デフォルトの名無しさん
2019/06/30(日) 19:12:33.55ID:wmvzG4iV 「POSIXクソだりー可搬性なんていらん」とかいうやつはshellcheckとかリンター使えよ
885デフォルトの名無しさん
2019/06/30(日) 19:29:06.56ID:/aVhErQn >>869
https://output.jsbin.com/hekociluta
Draw.io (http://www.draw.io/) ドキュメント
https://pastebin.com/KzSajdA8
間違ってるとこもあるだろうが、あとは自分で
https://output.jsbin.com/hekociluta
Draw.io (http://www.draw.io/) ドキュメント
https://pastebin.com/KzSajdA8
間違ってるとこもあるだろうが、あとは自分で
886デフォルトの名無しさん
2019/06/30(日) 20:26:11.65ID:1ALBmyOB >>881
それな。
「シェルスクリプトは可搬性がない!」なんて言ってる奴が単に可搬性のある書き方を知らないだけだと思う。
もちろんPOSIXに準拠するかしないかは個人の自由だけど
そんなことも知らずにPOSIX規格に記載のない書き方をしておいて「可搬性がない」は失笑モノだわ。
それな。
「シェルスクリプトは可搬性がない!」なんて言ってる奴が単に可搬性のある書き方を知らないだけだと思う。
もちろんPOSIXに準拠するかしないかは個人の自由だけど
そんなことも知らずにPOSIX規格に記載のない書き方をしておいて「可搬性がない」は失笑モノだわ。
887デフォルトの名無しさん
2019/06/30(日) 21:48:35.95ID:2juPiYlp 他で動かないように書けてしまうのが問題。
POSIX範囲外の余計な機能を付けるからだ。
すべて削除してPOSIX以外書けないひとつのshにするべし。
POSIX範囲外の余計な機能を付けるからだ。
すべて削除してPOSIX以外書けないひとつのshにするべし。
888デフォルトの名無しさん
2019/06/30(日) 22:03:54.02ID:pDzbN/vc \
 ̄ヽ、 _ノ
○
O と思うハゲであった
___
o,.,  ̄ `丶、
.〃;.; ; O `、
/;i;i;.; ; ° ヽ
j!;i;i;i;.; `、
.j!;i;i; ; V
. , -v{功テえ三≧k j i i}
.i;i;i;i∧;{i ___ ヽ〉-- 〃ヌニ≠ェァ;,、_ /〉
{i;i;i;i;i;i;ム ‘、 ̄≧ j.r−v{! __ `v身≧"
i;i;j!;i;i;i;.;丶 _ .ノノ `ム、´⌒`ー /;アー7´〉
. v;i;i;i; ;´ ,ァ 丶`_ ノ/ / y゜
. j;i;i;i;.; ィ( {! ヽ, i}U
. {;i;i;.; /‘≠ー弋__. ヘ iノ
:;i;i;.; ; }/ ____  ̄ \ |
.人;i;i;i;.; ト 卞、カv ̄T++=a、 〉 j}
.__/ ∧;i;i;i;,ミ 、  ̄ ̄ ̄ ̄ ̄ j〕 /^
\ ∧;弋ミ /
\ へ`,,ヾ;.;, ィ爪
ヽ へ、 . ´/ ト、__
} >; ,,__ーァ ´ .イ i \ ̄\
〃/⌒ヽ.j \ \
 ̄ヽ、 _ノ
○
O と思うハゲであった
___
o,.,  ̄ `丶、
.〃;.; ; O `、
/;i;i;.; ; ° ヽ
j!;i;i;i;.; `、
.j!;i;i; ; V
. , -v{功テえ三≧k j i i}
.i;i;i;i∧;{i ___ ヽ〉-- 〃ヌニ≠ェァ;,、_ /〉
{i;i;i;i;i;i;ム ‘、 ̄≧ j.r−v{! __ `v身≧"
i;i;j!;i;i;i;.;丶 _ .ノノ `ム、´⌒`ー /;アー7´〉
. v;i;i;i; ;´ ,ァ 丶`_ ノ/ / y゜
. j;i;i;i;.; ィ( {! ヽ, i}U
. {;i;i;.; /‘≠ー弋__. ヘ iノ
:;i;i;.; ; }/ ____  ̄ \ |
.人;i;i;i;.; ト 卞、カv ̄T++=a、 〉 j}
.__/ ∧;i;i;i;,ミ 、  ̄ ̄ ̄ ̄ ̄ j〕 /^
\ ∧;弋ミ /
\ へ`,,ヾ;.;, ィ爪
ヽ へ、 . ´/ ト、__
} >; ,,__ーァ ´ .イ i \ ̄\
〃/⌒ヽ.j \ \
889デフォルトの名無しさん
2019/06/30(日) 22:10:03.75ID:XM+o4kuM posix linker 作ったら需要ありそうだな?
890デフォルトの名無しさん
2019/06/30(日) 22:37:50.33ID:29vlF+26891デフォルトの名無しさん
2019/06/30(日) 22:40:13.43ID:rfDMTcnr >>886
結局複数環境で動かすには何が必要かは置かれた環境でまちまちなわけで。
grep や awk が POSIX 対応していない環境だってあるわけで、そういう人からすると
POSIX 準拠してればいいって言ってる人は論外なわけなんだわ。
結局複数環境で動かすには何が必要かは置かれた環境でまちまちなわけで。
grep や awk が POSIX 対応していない環境だってあるわけで、そういう人からすると
POSIX 準拠してればいいって言ってる人は論外なわけなんだわ。
892デフォルトの名無しさん
2019/06/30(日) 22:44:16.79ID:rfDMTcnr >>882
流石に「そのシステム専用」は失礼過ぎないか?
FreeBSD でも Linux でも AIX でも Solaris でも大概な UNIX ライクなシステムで動くし、それらの環境を持ってない
開発者が作ったプログラムを安全にサポートしてくれてるでしょ?
それとも autoconf とか automake とか使ったことない人かな? なら黙っててよ。
流石に「そのシステム専用」は失礼過ぎないか?
FreeBSD でも Linux でも AIX でも Solaris でも大概な UNIX ライクなシステムで動くし、それらの環境を持ってない
開発者が作ったプログラムを安全にサポートしてくれてるでしょ?
それとも autoconf とか automake とか使ったことない人かな? なら黙っててよ。
893デフォルトの名無しさん
2019/06/30(日) 22:50:27.23ID:wmvzG4iV894デフォルトの名無しさん
2019/06/30(日) 22:56:53.99ID:rfDMTcnr >>893
準拠してるっていっても非準拠の時代に対して互換性を確保する必要があるから PATH を通す順番
変えるとかでシステムごとに if 文地獄。
ここまでちゃんとやって可搬性があるって胸張れるってもんでしょ。
準拠してるっていっても非準拠の時代に対して互換性を確保する必要があるから PATH を通す順番
変えるとかでシステムごとに if 文地獄。
ここまでちゃんとやって可搬性があるって胸張れるってもんでしょ。
895デフォルトの名無しさん
2019/06/30(日) 22:59:21.24ID:Fo3wYRY8896デフォルトの名無しさん
2019/06/30(日) 23:03:50.43ID:29vlF+26897デフォルトの名無しさん
2019/06/30(日) 23:06:51.19ID:wmvzG4iV898デフォルトの名無しさん
2019/06/30(日) 23:12:25.38ID:rfDMTcnr >>895,896
当然 Yes ですよ?
そのシステムだけで動くものなら最初から Makefile だけつくってりゃいいって話になる。
ちゃんと書けてない、エラーメッセージろくによんでないからそうなるだけだろ?
当然 Yes ですよ?
そのシステムだけで動くものなら最初から Makefile だけつくってりゃいいって話になる。
ちゃんと書けてない、エラーメッセージろくによんでないからそうなるだけだろ?
899デフォルトの名無しさん
2019/06/30(日) 23:15:28.03ID:rfDMTcnr >>897
現実のシステム触ってなくて自信なくなったからディスるって、もう見てられないです。
現実のシステム触ってなくて自信なくなったからディスるって、もう見てられないです。
900デフォルトの名無しさん
2019/06/30(日) 23:15:47.94ID:Fo3wYRY8 >>898
ばかやなー。configureは環境毎に生成するものなんだから
可搬性が有るかどうかを考える必要がない問題
コピーしないものをコピーしても動くようにするには
どうするかなんて、考える意味がないことだろ
今話してるのは「シェルスクリプトで可搬性のあるコードを書く」という
書かないものについて、話をしても意味はない。
ばかやなー。configureは環境毎に生成するものなんだから
可搬性が有るかどうかを考える必要がない問題
コピーしないものをコピーしても動くようにするには
どうするかなんて、考える意味がないことだろ
今話してるのは「シェルスクリプトで可搬性のあるコードを書く」という
書かないものについて、話をしても意味はない。
901デフォルトの名無しさん
2019/06/30(日) 23:21:48.21ID:wmvzG4iV902デフォルトの名無しさん
2019/06/30(日) 23:23:29.76ID:rfDMTcnr >>900
configure が環境ごとの Makefile や config.h を生成するのであって、configure は環境ごとに生成するものではないぞ?
環境ごとに生成するならなぜ Unix Like 向けのオープンソースは configure を配るわけ?
その理屈なら configure.ac だけで良いんじゃないの?
INSTALL に autoconf 先に実行してくださいって書いてないのはなんで?
configure が環境ごとの Makefile や config.h を生成するのであって、configure は環境ごとに生成するものではないぞ?
環境ごとに生成するならなぜ Unix Like 向けのオープンソースは configure を配るわけ?
その理屈なら configure.ac だけで良いんじゃないの?
INSTALL に autoconf 先に実行してくださいって書いてないのはなんで?
903デフォルトの名無しさん
2019/06/30(日) 23:24:55.93ID:rfDMTcnr904デフォルトの名無しさん
2019/06/30(日) 23:27:00.13ID:wmvzG4iV >>903
具体的にそのシステムを言ってみ?
具体的にそのシステムを言ってみ?
905デフォルトの名無しさん
2019/06/30(日) 23:33:02.77ID:rfDMTcnr >>904
Solaris AIX HPUX とかそうじゃん。
Solaris AIX HPUX とかそうじゃん。
906デフォルトの名無しさん
2019/06/30(日) 23:36:30.65ID:wmvzG4iV >>905
で、POSIX 互換コマンドがどこにつっこんであるって?
で、POSIX 互換コマンドがどこにつっこんであるって?
907デフォルトの名無しさん
2019/06/30(日) 23:39:42.23ID:rfDMTcnr >>906
/usr/bin じゃないところ。
/usr/bin じゃないところ。
908デフォルトの名無しさん
2019/06/30(日) 23:42:36.51ID:wmvzG4iV909デフォルトの名無しさん
2019/06/30(日) 23:44:01.95ID:Fo3wYRY8 >>902
> 環境ごとに生成するならなぜ Unix Like 向けのオープンソースは configure を配るわけ?
configure を配ってるタイプなら、
そのconfigure には可搬性が有るということだろw
> 環境ごとに生成するならなぜ Unix Like 向けのオープンソースは configure を配るわけ?
configure を配ってるタイプなら、
そのconfigure には可搬性が有るということだろw
910デフォルトの名無しさん
2019/06/30(日) 23:48:45.72ID:rfDMTcnr911デフォルトの名無しさん
2019/06/30(日) 23:49:35.01ID:rfDMTcnr >>908
何の話? POSIX 非互換の話をしているんだが?
何の話? POSIX 非互換の話をしているんだが?
912デフォルトの名無しさん
2019/06/30(日) 23:49:37.98ID:wmvzG4iV913デフォルトの名無しさん
2019/07/01(月) 00:10:23.68ID:ASzHSATG >>889
何をリンクするんだ?
何をリンクするんだ?
914デフォルトの名無しさん
2019/07/01(月) 01:28:15.55ID:2smzn43h 結局POSIX規格に準じてないコマンドの具体例一つも出せてなくて草生えますよ
「現行で使われているPOSIX準拠を謳っている筈のXXX-OSでは
/bin/xxxにあるコマンドXXXがPOSIX規格とこれこれこういう点で不一致」
↑これを言えばいいだけだぜ? それを言うのに何レスを無駄な喧嘩で消費してるんだ。
「現行で使われているPOSIX準拠を謳っている筈のXXX-OSでは
/bin/xxxにあるコマンドXXXがPOSIX規格とこれこれこういう点で不一致」
↑これを言えばいいだけだぜ? それを言うのに何レスを無駄な喧嘩で消費してるんだ。
915デフォルトの名無しさん
2019/07/01(月) 01:36:40.01ID:4+biahsm と、後出し先輩がドヤっておりますw
916デフォルトの名無しさん
2019/07/01(月) 02:49:48.37ID:2smzn43h あ、後出し?
917デフォルトの名無しさん
2019/07/01(月) 04:01:56.69ID:TT0ZFmIC オプションの-と--の扱いが雑なコマンドはどうなの
findは-の後が単語だし(-name)
wgetも-の後に2文字指定したりするし( -nc)
tarは-が不要な上に-の有無で挙動が変わるpsまであるし
基本コマンドの時点で既にガバガバじゃねーか
ddはそもそも出身が違うしな
findは-の後が単語だし(-name)
wgetも-の後に2文字指定したりするし( -nc)
tarは-が不要な上に-の有無で挙動が変わるpsまであるし
基本コマンドの時点で既にガバガバじゃねーか
ddはそもそも出身が違うしな
918デフォルトの名無しさん
2019/07/01(月) 04:33:11.57ID:TlV+Kbgz なにか困りますか?そういうオプションで
ターミナル上で普通にコマンド打ってますよ。
あなた黒い画面(CLI)で仕事できない人ですか?
ターミナル上で普通にコマンド打ってますよ。
あなた黒い画面(CLI)で仕事できない人ですか?
919デフォルトの名無しさん
2019/07/01(月) 07:34:33.04ID:KK3BgYtY >>918
なにか困りますって、別のシステムにスクリプト持って行った時に正常動作しないから困ります、でしょ。
なにか困りますって、別のシステムにスクリプト持って行った時に正常動作しないから困ります、でしょ。
920デフォルトの名無しさん
2019/07/01(月) 07:54:28.17ID:2smzn43h921デフォルトの名無しさん
2019/07/01(月) 09:00:56.52ID:TlV+Kbgz >>919
お前言ってることめちゃくちゃだな
コマンドによってオプションの形式が違ってるって話を
お前はしていただろ
別のシステムに持っていったって、あるコマンドの
オプションの形式は同じなんだから正常に動くだろ
お前言ってることめちゃくちゃだな
コマンドによってオプションの形式が違ってるって話を
お前はしていただろ
別のシステムに持っていったって、あるコマンドの
オプションの形式は同じなんだから正常に動くだろ
922デフォルトの名無しさん
2019/07/01(月) 11:01:27.11ID:AbRjjU8q date コマンドの オプション、
GNU版 と他の (BSD系 Mac とか) で全然違ってて戸惑った事がある
GNU版 と他の (BSD系 Mac とか) で全然違ってて戸惑った事がある
923デフォルトの名無しさん
2019/07/01(月) 11:29:32.06ID:4+biahsm POSIXは実装ありきの後出し規格なんだよ
カバーしきれない部分がたくさんある
917の挙げてる中で wget tar はPOSIXコマンドじゃない
特にネットワーク系コマンドはほとんど規格化されていない
POSIXから外れた部分の可搬性を高めるにはどうする?
例えばネットから何か落とそうと思ったら wgetかcurl使うじゃん
でも全てのシステムに必ず入ってるわけじゃない
無いならインストールしてくださいってなるわな
バージョン上がると独自拡張されたり仕様変わったりで対応いるだろ
POSIXみたいに下位互換性も保証されない
可搬性ってやつはどうなるんだ?
カバーしきれない部分がたくさんある
917の挙げてる中で wget tar はPOSIXコマンドじゃない
特にネットワーク系コマンドはほとんど規格化されていない
POSIXから外れた部分の可搬性を高めるにはどうする?
例えばネットから何か落とそうと思ったら wgetかcurl使うじゃん
でも全てのシステムに必ず入ってるわけじゃない
無いならインストールしてくださいってなるわな
バージョン上がると独自拡張されたり仕様変わったりで対応いるだろ
POSIXみたいに下位互換性も保証されない
可搬性ってやつはどうなるんだ?
924デフォルトの名無しさん
2019/07/01(月) 12:13:07.49ID:ywGyCn2/925デフォルトの名無しさん
2019/07/01(月) 12:31:44.39ID:4+biahsm926デフォルトの名無しさん
2019/07/01(月) 12:34:28.70ID:ywGyCn2/927デフォルトの名無しさん
2019/07/01(月) 12:47:29.70ID:RLVJ6D4b >>926
説明できない奴に限ってこういうこと言い出すんだよな
適当に書きましたごめんなさいってなんで言えないんだろう
宮迫だって金もらってましたごめんなさいって最初に言ってれば
秋には復帰できてたろうになあ(まあ復帰しなくても構いませんが)
説明できない奴に限ってこういうこと言い出すんだよな
適当に書きましたごめんなさいってなんで言えないんだろう
宮迫だって金もらってましたごめんなさいって最初に言ってれば
秋には復帰できてたろうになあ(まあ復帰しなくても構いませんが)
928デフォルトの名無しさん
2019/07/01(月) 14:20:27.36ID:TT0ZFmIC Macの(BSD版)sed での上書き保存 - Qiita
https://qiita.com/catfist/items/1156ae0c7875f61417ee
BSD sed のラベルの後ろではコマンド区切りのセミコロンが使えない - Qiita
https://qiita.com/akanehara/items/c9e2e3267746f51577a1
優等生なはずのBSDの方が不便に思えるけど
https://qiita.com/catfist/items/1156ae0c7875f61417ee
BSD sed のラベルの後ろではコマンド区切りのセミコロンが使えない - Qiita
https://qiita.com/akanehara/items/c9e2e3267746f51577a1
優等生なはずのBSDの方が不便に思えるけど
929デフォルトの名無しさん
2019/07/01(月) 16:02:21.59ID:0UaOtlQU 優等生ってなにをもってなのかわからんが、BSDのコマンドよりもGNUの方があれやこれやオプションが充実してたりする。POSIXの方がもっと不便だぞw
開発者の数が全然違うんだろうからしょうがないんだろう
開発者の数が全然違うんだろうからしょうがないんだろう
930デフォルトの名無しさん
2019/07/01(月) 16:09:57.86ID:0UaOtlQU >>926
言語の可搬性ではなくて、やりたいことを書いたプログラム(シェルスクリプト)の可搬性を言っているんだろ
比喩にはなってないだろう。C++で書いたDirectXを使ったソースの可搬性なんてないと自分でも言っているんだから
言語の可搬性ではなくて、やりたいことを書いたプログラム(シェルスクリプト)の可搬性を言っているんだろ
比喩にはなってないだろう。C++で書いたDirectXを使ったソースの可搬性なんてないと自分でも言っているんだから
931デフォルトの名無しさん
2019/07/01(月) 16:50:15.40ID:2smzn43h そりゃsedの「GNU拡張」をBSDで使えば可搬性はなくなるだろうけど
「拡張」って言葉の意味わかってる?
双方ともPOSIX sedには最低限準拠してるから、
POSIX sedの仕様だけを守ってればどっちの環境でも動く。
「拡張」って言葉の意味わかってる?
双方ともPOSIX sedには最低限準拠してるから、
POSIX sedの仕様だけを守ってればどっちの環境でも動く。
932デフォルトの名無しさん
2019/07/01(月) 16:56:06.15ID:0UaOtlQU たぶん、ID:TT0ZFmIC はそういうレベルの話ではない
そもそも>>928は可搬性の話ではないだろう。POSIXにするとなお不便になるからな。可搬性の話なら最後の言葉は出ないだろう
そもそも>>928は可搬性の話ではないだろう。POSIXにするとなお不便になるからな。可搬性の話なら最後の言葉は出ないだろう
933デフォルトの名無しさん
2019/07/01(月) 18:51:49.95ID:4+biahsm 可搬性高いシェルスクリプト書くならPOSIXで書く
これは間違っていない
でもPOSIXで何でも書けるわけじゃない
環境依存しないと書けない部分がある
POSIXは不完全な規格だってことだ
俺はPOSIX推進派だけどなw
これは間違っていない
でもPOSIXで何でも書けるわけじゃない
環境依存しないと書けない部分がある
POSIXは不完全な規格だってことだ
俺はPOSIX推進派だけどなw
934デフォルトの名無しさん
2019/07/01(月) 19:18:29.65ID:MoEwNeEz まとめるとどこでも動くシェルスクリプトなんて都市伝説ってことだよね
935デフォルトの名無しさん
2019/07/01(月) 19:21:40.57ID:0UaOtlQU そもそも可搬性可搬性って、そんなあれやこれやの環境を管理していんのかいっていう
シェルスクリプトで書けるものなんて全然たいしたことは書けないので、環境がしょうがなく変わったらそれに対して書き換えればいいだろうとしか思わんな
シェルクスリプトは単に補助的にしか使わない、本業は別の言語(IDE、最低限でもmakeが必要な)な俺は、可搬性可搬性って???だなw
シェルスクリプトで書けるものなんて全然たいしたことは書けないので、環境がしょうがなく変わったらそれに対して書き換えればいいだろうとしか思わんな
シェルクスリプトは単に補助的にしか使わない、本業は別の言語(IDE、最低限でもmakeが必要な)な俺は、可搬性可搬性って???だなw
936デフォルトの名無しさん
2019/07/01(月) 19:22:31.61ID:0UaOtlQU937デフォルトの名無しさん
2019/07/01(月) 19:41:01.62ID:ywGyCn2/ まとめるとどこでも動くC言語なんて都市伝説ってことだよね
C言語でゲームできないもん
C言語でゲームできないもん
938デフォルトの名無しさん
2019/07/01(月) 19:42:42.21ID:0UaOtlQU イミフすぎwどうした?
939デフォルトの名無しさん
2019/07/01(月) 20:52:04.97ID:2smzn43h まあ要するに、POSIXに準拠しとけばかなり可搬性の高いシェルスクリプトが書ける。
でもどんな言語でもそうであるように「完璧で」「完全な」可搬性は実現できない。
しかしまあ俺個人としてはシェルスクリプトは可搬性を高めやすい言語だと思うけどね。
ちゃんと実装から独立した文書としての規格があるし。
でもどんな言語でもそうであるように「完璧で」「完全な」可搬性は実現できない。
しかしまあ俺個人としてはシェルスクリプトは可搬性を高めやすい言語だと思うけどね。
ちゃんと実装から独立した文書としての規格があるし。
940デフォルトの名無しさん
2019/07/01(月) 20:55:17.40ID:2smzn43h941デフォルトの名無しさん
2019/07/01(月) 21:09:18.21ID:0UaOtlQU >>939
あと、不完全なPOSIX規格でも、それがあればこそなにかあってもポーティングがどちからという楽すぎってのも
あと、不完全なPOSIX規格でも、それがあればこそなにかあってもポーティングがどちからという楽すぎってのも
942デフォルトの名無しさん
2019/07/01(月) 21:29:02.92ID:2smzn43h 次スレ立てるときワッチョイを有効にしたいんだけど
どうすればいいんだっけ。
どうすればいいんだっけ。
943デフォルトの名無しさん
2019/07/01(月) 21:31:41.60ID:0UaOtlQU いや、いらないw
944デフォルトの名無しさん
2019/07/01(月) 21:39:48.33ID:ywGyCn2/ >>938
だからシェルスクリプトで、外部コマンドが違っていて動かないというのなら、
C言語で、APIが違っていて動かないよね
でも言語(シェルスクリプト or C言語)は可搬性が有るよね
言語以外の部分が異なっていたとしても。
ってことだけど?
だからシェルスクリプトで、外部コマンドが違っていて動かないというのなら、
C言語で、APIが違っていて動かないよね
でも言語(シェルスクリプト or C言語)は可搬性が有るよね
言語以外の部分が異なっていたとしても。
ってことだけど?
945デフォルトの名無しさん
2019/07/01(月) 21:51:05.99ID:0UaOtlQU946デフォルトの名無しさん
2019/07/01(月) 21:54:31.40ID:0UaOtlQU947デフォルトの名無しさん
2019/07/01(月) 22:28:22.64ID:KK3BgYtY >>944
可搬性があるんじゃなくてコンパイルが通るだけ or プリプロセッサまでが通るだけ。
同じシステムコールでも SysV と BSD で動作が違うとかあって、コンパイル通るだけで碌に動かないものも出る。
C で可搬性を求めるなら automake 使ってどこが不都合かを確認しまくるしかない。
それも不完全なので最後は地道なデバッグ。
可搬性があるんじゃなくてコンパイルが通るだけ or プリプロセッサまでが通るだけ。
同じシステムコールでも SysV と BSD で動作が違うとかあって、コンパイル通るだけで碌に動かないものも出る。
C で可搬性を求めるなら automake 使ってどこが不都合かを確認しまくるしかない。
それも不完全なので最後は地道なデバッグ。
948デフォルトの名無しさん
2019/07/01(月) 22:46:24.38ID:ywGyCn2/949デフォルトの名無しさん
2019/07/01(月) 22:52:54.73ID:0UaOtlQU950デフォルトの名無しさん
2019/07/01(月) 22:53:24.20ID:0UaOtlQU また間違っちゃった。>>934にはナニかあるのかw
951デフォルトの名無しさん
2019/07/01(月) 22:54:29.90ID:ywGyCn2/952デフォルトの名無しさん
2019/07/01(月) 22:55:29.41ID:0UaOtlQU って、言ってるじゃんww
その直後にイミフのレスしてたんじゃん。なんなの?ww
その直後にイミフのレスしてたんじゃん。なんなの?ww
953デフォルトの名無しさん
2019/07/01(月) 22:59:32.21ID:2smzn43h なんで0か1かにそんなに拘るのか。
「シェルスクリプトでは可搬性のあるものは書けない」
という(間違った)認識に対して
「シェルスクリプトには可搬性を持たせられる」
と是正しただけなのにね。
そして可搬性の問題はシェルスクリプトに限らない。
どんな言語にも完全な可搬性はないし、かといって全く可搬性がない訳でもない。
それだけの話をどうしてこうも荒立てられるかね……。
「シェルスクリプトでは可搬性のあるものは書けない」
という(間違った)認識に対して
「シェルスクリプトには可搬性を持たせられる」
と是正しただけなのにね。
そして可搬性の問題はシェルスクリプトに限らない。
どんな言語にも完全な可搬性はないし、かといって全く可搬性がない訳でもない。
それだけの話をどうしてこうも荒立てられるかね……。
954デフォルトの名無しさん
2019/07/01(月) 23:02:42.75ID:ywGyCn2/ まとめるとどこでも動くシェルスクリプトは都市伝説じゃなくて作れるってことだよね
955デフォルトの名無しさん
2019/07/01(月) 23:03:30.59ID:0UaOtlQU ですw
956デフォルトの名無しさん
2019/07/01(月) 23:08:07.17ID:0UaOtlQU957デフォルトの名無しさん
2019/07/01(月) 23:20:50.03ID:/rKj5XUf958デフォルトの名無しさん
2019/07/01(月) 23:37:03.32ID:4+biahsm おまえらまとめるの好きだよなw
959デフォルトの名無しさん
2019/07/01(月) 23:41:59.98ID:KK3BgYtY POSIX (というか BSD の /bin/sh である dash?) に合わせたほうが幸せなのか
#!/bin/bash って書いて bash 限定にしたほうが幸せなのか。
個人的には後者でサクッと短時間でかつ可読性高く仕上げるのが好み。
#!/bin/bash って書いて bash 限定にしたほうが幸せなのか。
個人的には後者でサクッと短時間でかつ可読性高く仕上げるのが好み。
960デフォルトの名無しさん
2019/07/01(月) 23:44:17.54ID:GotlxjDf > というか BSD の /bin/sh である dash?
dashのdはdebian linuxのdな
> 個人的には後者でサクッと短時間でかつ可読性高く仕上げるのが好み。
それはPOSIX(dash)でもbashでも変わらん
dashのdはdebian linuxのdな
> 個人的には後者でサクッと短時間でかつ可読性高く仕上げるのが好み。
それはPOSIX(dash)でもbashでも変わらん
961デフォルトの名無しさん
2019/07/02(火) 00:01:10.80ID:p7jTc1Zw 可搬性云々は要件次第なんだよ
動作保証は Ubuntuのみで良いなら環境依存で書けばいい
動作保証は Ubuntuのみで良いなら環境依存で書けばいい
962デフォルトの名無しさん
2019/07/02(火) 00:02:35.22ID:Tm8GOmHy >>960
> dashのdはdebian linuxのdな
これは勉強不足で失礼いたしました。
>それはPOSIX(dash)でもbashでも変わらん
POSIX(dash) で [[ =~ ]] って簡潔に書ける?
for ((i=0;16>i;i++)) ; do (loop内で $i 更新あり) とかは?
> dashのdはdebian linuxのdな
これは勉強不足で失礼いたしました。
>それはPOSIX(dash)でもbashでも変わらん
POSIX(dash) で [[ =~ ]] って簡潔に書ける?
for ((i=0;16>i;i++)) ; do (loop内で $i 更新あり) とかは?
963デフォルトの名無しさん
2019/07/02(火) 00:06:02.50ID:+q6wCm94 GNU拡張はGNUの方言だけどBSDにも方言くらいあるでしょ
BSDだけで盛られたコマンドってないの
BSDだけで盛られたコマンドってないの
964デフォルトの名無しさん
2019/07/02(火) 00:15:08.55ID:Atdu9zIi >>962
> POSIX(dash) で [[ =~ ]] って簡潔に書ける?
多くはcaseで十分。足りなければexprを使えばいい。
> for ((i=0;16>i;i++)) ; do (loop内で $i 更新あり) とかは?
seqかwhileを使えばいい
> POSIX(dash) で [[ =~ ]] って簡潔に書ける?
多くはcaseで十分。足りなければexprを使えばいい。
> for ((i=0;16>i;i++)) ; do (loop内で $i 更新あり) とかは?
seqかwhileを使えばいい
965デフォルトの名無しさん
2019/07/02(火) 00:31:10.69ID:rBxHnYzF >>964
exprってPOSIXだも正規表現処理できるのか。
exprってPOSIXだも正規表現処理できるのか。
966デフォルトの名無しさん
2019/07/02(火) 00:34:13.92ID:uO4UDEG+ 簡潔にって書いてあるだろうに
967デフォルトの名無しさん
2019/07/02(火) 00:37:15.66ID:Tm8GOmHy968デフォルトの名無しさん
2019/07/02(火) 01:41:05.60ID:Atdu9zIi969デフォルトの名無しさん
2019/07/02(火) 01:43:35.24ID:Atdu9zIi >>965
https://pubs.opengroup.org/onlinepubs/009695399/utilities/expr.html
> The ':' matching operator shall compare the string resulting from the evaluation of expr1 with
> the regular expression pattern
https://pubs.opengroup.org/onlinepubs/009695399/utilities/expr.html
> The ':' matching operator shall compare the string resulting from the evaluation of expr1 with
> the regular expression pattern
970デフォルトの名無しさん
2019/07/02(火) 01:44:27.35ID:uO4UDEG+ 好みって言っているのに。それはあなたの好み
好みに合うようななにかを提示するかスルーすればいいだろうに
好みに合うようななにかを提示するかスルーすればいいだろうに
971デフォルトの名無しさん
2019/07/02(火) 03:09:33.83ID:rBxHnYzF >>962
[[ "$VAR" =~ '<regexp>' ]]
↓
expr "$VAR" : '<regexp>'
for ((i=0;16>i;i++)) ; do
echo $i
done
↓
i=0; while [ $i -lt 16 ]; do
echo $i
i=$((i+1)); done
こんなもんでいかがでしょ。
簡潔かつ高い可搬性を持ったシェルスクリプトになったと思う。
よければこれから書く可搬性の高いシェルスクリプトの参考にしてみて!
[[ "$VAR" =~ '<regexp>' ]]
↓
expr "$VAR" : '<regexp>'
for ((i=0;16>i;i++)) ; do
echo $i
done
↓
i=0; while [ $i -lt 16 ]; do
echo $i
i=$((i+1)); done
こんなもんでいかがでしょ。
簡潔かつ高い可搬性を持ったシェルスクリプトになったと思う。
よければこれから書く可搬性の高いシェルスクリプトの参考にしてみて!
972デフォルトの名無しさん
2019/07/02(火) 03:45:23.93ID:uO4UDEG+ まさか、その変えた方が簡潔かつ高い可搬性を持ったという??
なんのためのbash(などの)の拡張なんだかだよ。俺には理解できない。まあ、ID:Tm8GOmHyが理解できたら特にだけど
なんのためのbash(などの)の拡張なんだかだよ。俺には理解できない。まあ、ID:Tm8GOmHyが理解できたら特にだけど
973デフォルトの名無しさん
2019/07/02(火) 03:49:34.72ID:uO4UDEG+ ところで、while内での変数の変更とかどうしてんの?そんなにPOSIXに拘る人は
974デフォルトの名無しさん
2019/07/02(火) 03:52:13.98ID:uO4UDEG+ ああ、パイプでサブシェルになってしまう場合のwhileね。よく使うパターンの
975デフォルトの名無しさん
2019/07/02(火) 03:55:40.28ID:Atdu9zIi たったこれだけの違いで大騒ぎ(笑)
976デフォルトの名無しさん
2019/07/02(火) 03:58:00.36ID:uO4UDEG+ お前がいうなw
977デフォルトの名無しさん
2019/07/02(火) 04:01:44.98ID:Atdu9zIi >>974
今後の人生、サブシェルの中に移住すればいいだけだろ
cat dummy.txt | {
i=0
while IFS= read -r line; do
i=$((i+1))
done
echo "$i"
}
今後の人生、サブシェルの中に移住すればいいだけだろ
cat dummy.txt | {
i=0
while IFS= read -r line; do
i=$((i+1))
done
echo "$i"
}
978デフォルトの名無しさん
2019/07/02(火) 04:05:15.58ID:uO4UDEG+ そのcatレベルで必要なんじゃね、普通は
そんな狭いパターンが主なのか?お前の人生は。俺の人生でそのパターンは少なさそう
そういうんじゃないよ普遍的wなのでだよ
そんな狭いパターンが主なのか?お前の人生は。俺の人生でそのパターンは少なさそう
そういうんじゃないよ普遍的wなのでだよ
979デフォルトの名無しさん
2019/07/02(火) 04:05:54.52ID:Atdu9zIi >>978
イミフ。例を出せ例を
イミフ。例を出せ例を
980デフォルトの名無しさん
2019/07/02(火) 04:12:40.39ID:Atdu9zIi981デフォルトの名無しさん
2019/07/02(火) 04:21:16.83ID:uO4UDEG+ なにか前処理
hoge=0
cat | while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
とか。ループ中に例外的なのを検出した後にトップレベルで整理するとか。あとは、whileの後にもパイプで続けてその後でとか。局所的なので使うことはないな
気が短いなw
hoge=0
cat | while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
とか。ループ中に例外的なのを検出した後にトップレベルで整理するとか。あとは、whileの後にもパイプで続けてその後でとか。局所的なので使うことはないな
気が短いなw
982デフォルトの名無しさん
2019/07/02(火) 04:29:33.75ID:Atdu9zIi こうすればいいだけw
なにか前処理
cat | {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
なにか前処理
cat | {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
983デフォルトの名無しさん
2019/07/02(火) 04:33:37.38ID:uO4UDEG+ ほんとうにそれでいいと思うのか?w
なんか無理してんなと思うけど、POSIXに拘る人はそう書くのねと理解はした、お応えありがとう
なんか無理してんなと思うけど、POSIXに拘る人はそう書くのねと理解はした、お応えありがとう
984デフォルトの名無しさん
2019/07/02(火) 04:35:32.93ID:Atdu9zIi985デフォルトの名無しさん
2019/07/02(火) 04:37:28.40ID:uO4UDEG+ いやあ、ああいうのが普通な人には何も言い返せないよ。てか「言い返す」って。喧嘩かなんかなのか?w
986デフォルトの名無しさん
2019/07/02(火) 04:41:11.93ID:Atdu9zIi 喧嘩じゃなくて、お前の意見を言えって。
正しく動くだろ?
なにか問題が有るのか?
正しく動くだろ?
なにか問題が有るのか?
987デフォルトの名無しさん
2019/07/02(火) 04:45:47.25ID:Atdu9zIi シェルスクリプト初心者です。 { } の使い方がわかりません
とかいうなら、関数にでもすればいい
foo() {
なにか前処理
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
cat | foo
お前の苦手な { } が無くてすんだぞw
サブシェルうんぬんの前に、関数の中で使う変数は、関数の中にとどめておけよ。
わかりやすいコーディングというのはこういうものだ
とかいうなら、関数にでもすればいい
foo() {
なにか前処理
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
cat | foo
お前の苦手な { } が無くてすんだぞw
サブシェルうんぬんの前に、関数の中で使う変数は、関数の中にとどめておけよ。
わかりやすいコーディングというのはこういうものだ
988デフォルトの名無しさん
2019/07/02(火) 04:47:32.87ID:uO4UDEG+ そのサブシェルの中で後は全部やるんでしょ?必要な部分を。それで問題無いと思うなら、それでいいんじゃないの
「なんか無理してんな」ってのがわからないんだったらそれはそれでいいよ。元ネタと同じく、好みの問題。好みがわからないでしょ
「なんか無理してんな」ってのがわからないんだったらそれはそれでいいよ。元ネタと同じく、好みの問題。好みがわからないでしょ
989デフォルトの名無しさん
2019/07/02(火) 04:50:12.51ID:Atdu9zIi だから問題ないし、お前を含めて誰も問題があると言ってない。
お前さ、なんで自分で問題点を指摘できないのに
さも問題があるかのように装ってるわけ?
ばれないとでも思った?
お前さ、なんで自分で問題点を指摘できないのに
さも問題があるかのように装ってるわけ?
ばれないとでも思った?
990デフォルトの名無しさん
2019/07/02(火) 04:50:38.17ID:uO4UDEG+ なにか頑張ってるな。そんな話じゃないよ
知識自慢臭しかもうしませんよ?そんなの自慢げというか馬鹿にしたいだけなのか知らんけど
知識自慢臭しかもうしませんよ?そんなの自慢げというか馬鹿にしたいだけなのか知らんけど
991デフォルトの名無しさん
2019/07/02(火) 04:53:12.30ID:Atdu9zIi そんな話じゃないよ → じゃあどんな話なのか → 答えずに逃げる(笑)
992デフォルトの名無しさん
2019/07/02(火) 04:53:48.95ID:uO4UDEG+ 問題がある問題がないの話じゃないよ。好みだよ好み
そう次々あれこれ考えなくてもw bash(など)の拡張使えばスッキリだろうにという
そう次々あれこれ考えなくてもw bash(など)の拡張使えばスッキリだろうにという
993デフォルトの名無しさん
2019/07/02(火) 04:54:45.55ID:Atdu9zIi >>987のどこがスッキリとしてないというのか?
お前ならbashでどう書き直す?w
お前ならbashでどう書き直す?w
994デフォルトの名無しさん
2019/07/02(火) 04:57:00.91ID:uO4UDEG+ hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
そもそもやりたいことがレベルが変わらずにそのままでスッキリだなwあとあとでなにか追加もとかもね
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
そもそもやりたいことがレベルが変わらずにそのままでスッキリだなwあとあとでなにか追加もとかもね
995デフォルトの名無しさん
2019/07/02(火) 04:58:47.96ID:Atdu9zIi >>994
それ、俺が書いたfoo関数の中身を書いただけじゃねーかw
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
これで動くよ。
foo() {
上のコード
}
cat | foo
ってやればいいだけ
それ、俺が書いたfoo関数の中身を書いただけじゃねーかw
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
これで動くよ。
foo() {
上のコード
}
cat | foo
ってやればいいだけ
996デフォルトの名無しさん
2019/07/02(火) 05:01:09.48ID:Atdu9zIi Q.これをPOSIX準拠で書きたいのですが?
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
A. まず1. 関数にしましょう
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
foo
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
A. まず1. 関数にしましょう
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done < <(cat)
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
foo
997デフォルトの名無しさん
2019/07/02(火) 05:01:36.77ID:uO4UDEG+ いや、だから、お題に対してだけじゃなくな。普遍的にって言ってるでしょ
それが普遍的なのか?
なんで否定されたのをそんなに拘るねん。否定してんのは俺の好みじゃないってだけだぞ?w
それが普遍的なのか?
なんで否定されたのをそんなに拘るねん。否定してんのは俺の好みじゃないってだけだぞ?w
998デフォルトの名無しさん
2019/07/02(火) 05:01:53.99ID:Atdu9zIi 2. bash依存の命令をなくしましょう。
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
cat | foo
はい。完成です(笑)
foo() {
hoge=0
while IFS= read -r line; do
[ なにか ] && hoge=1
ほかにいろいろ
done
if [ hoge = 0 ]; then
前処理の調整
else
前処理の調整
fi
}
cat | foo
はい。完成です(笑)
999デフォルトの名無しさん
2019/07/02(火) 05:02:22.44ID:Atdu9zIi >>997
だから < <(cat) を使う場合の普遍的な解答
だから < <(cat) を使う場合の普遍的な解答
1000デフォルトの名無しさん
2019/07/02(火) 05:02:50.90ID:Atdu9zIi やっぱり書き方を知らんだけだったな(笑)
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 283日 5時間 28分 4秒
新しいスレッドを立ててください。
life time: 283日 5時間 28分 4秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 生活保護廃止、公務員の給与に最低賃金を適用⇦これをやるだけで国民の9割の不満が解消されるのにやらない理由 [218488394]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
- 台湾政党が高市首相「存立危機事態」発言に感謝の書簡「我々の心を強く奮い立たせるものでした」 [834922174]
