シェルスクリプト総合 その29

!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。

スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

246デフォルトの名無しさん (ワッチョイ 7b98-usPd)2018/10/18(木) 18:24:07.81ID:/ofNkRJS0
>>245
ん? どういうふうに書くってこと?

>>237の件、ぼや〜っとだけどわかりかけてきた気がする

スクリプトのコードが.(ドット)コマンドで評価された時点で、
関数がすでに存在している場合、その関数を使用するコードがあれば
事前にリンクされているような動きをしている

その場合サブシェルで関数を再定義しようとしてもできないんじゃないかな
だから事前にリンクできないようにeval呼び出しに変更したら
再定義された方の関数を呼び出すようになった

247デフォルトの名無しさん (ワッチョイ 6a7c-fIkj)2018/10/18(木) 18:35:46.85ID:uRBurQVb0
((a % 5 == 0))&& ...
なんで一々ここまで言わんとわからんような奴が、他人の指摘しているんだろうかね。。。
-eqでの数値比較とか基本中の基本だろうに。

248デフォルトの名無しさん (ワッチョイ 7b98-usPd)2018/10/18(木) 18:50:03.03ID:/ofNkRJS0
>>247

$ dash -c 'a=0; ((a % 5 == 0)) && echo ok'
dash: 1: a: not found

$ dash -c 'a=0; (($a % 5 == 0)) && echo ok'
dash: 1: 0: Permission denied

なぜかって?
その書き方はPOSIX準拠じゃないもの

https://github.com/koalaman/shellcheck/wiki/SC2039#standalone-

249デフォルトの名無しさん (ワッチョイ 7b98-usPd)2018/10/18(木) 18:56:56.93ID:/ofNkRJS0
動かないコード出されて、偉そうにされても
やれやれって言うしか無いわなw

250デフォルトの名無しさん (アウアウカー Safb-nHS7)2018/10/18(木) 19:33:42.29ID:9i8IzX+1a
(( )) ではなく [[ ]] では?

251デフォルトの名無しさん (ワッチョイ 7b98-usPd)2018/10/18(木) 19:37:12.04ID:/ofNkRJS0
[[ ]] もPOSIX準拠ではない

またぽっじくすか

253デフォルトの名無しさん (ワッチョイ dbeb-YVHm)2018/10/19(金) 00:21:19.12ID:0zKHBU8T0
>>239だけど、奥が深いね
if使わずにもできたりするのか
はぁ、先は長そうだ、ありがとう

254デフォルトの名無しさん (ワッチョイ 26e7-iIDB)2018/10/19(金) 01:23:10.99ID:JmLVta5V0
cat file.txt | ( head; tail) は最高

255デフォルトの名無しさん (ワッチョイ f398-usPd)2018/10/20(土) 02:22:05.90ID:V0y1IBp60
>>224
> parsargコマンドみたいなのを再発明したほうが早いかもね

違うもの調べてて、こういうのを見つけた。
見つけたってだけでどんなものかは調べていない

http://zentoo.hatenablog.com/entry/20110708/1310124831
> ちょっとした理由でgit-flow (https://github.com/nvie/gitflow) のソースを
> ちょっとちょっと眺めていたんだけど、内部でコマンドライン引数を
> パースするためにshflagsというツールが使われていたのでメモ。

256デフォルトの名無しさん (ワッチョイ db8a-2XJB)2018/10/20(土) 06:26:18.72ID:EzXK/x1W0
>>254
おまえらなんでそんなに猫が好きなん?

257デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)2018/10/20(土) 12:30:19.19ID:o8LOHz9N0
それを疑問に思う人間に説明するのは困難だ

258デフォルトの名無しさん (オッペケ Srb3-iHQf)2018/10/20(土) 12:37:11.93ID:MzLaXRRvr
猫好きてそんなに言語化しにくい複雑怪奇な感情持っとるんか?

259デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)2018/10/20(土) 12:43:08.81ID:o8LOHz9N0
例えば女をみて欲情しない人間に、なぜ欲情するのかを説明するのは難しいだろう
言葉を並べるだけなら本能だとか体の特徴なんかを言えるが、共感はされまい
つまりそれを疑問に感じる人間には、その時点ですでに納得させる言葉がないのだ

260デフォルトの名無しさん (オッペケ Srb3-iHQf)2018/10/20(土) 12:48:37.62ID:MzLaXRRvr
でもそもそも説明するのが困難なのやろ?
おまえが言ったんやで

261デフォルトの名無しさん (ワッチョイ f398-usPd)2018/10/20(土) 12:55:36.75ID:V0y1IBp60
おい、スレと無関係な話をして荒らすな

262デフォルトの名無しさん (ワッチョイ 3bfb-6CEe)2018/10/20(土) 12:56:11.89ID:o8LOHz9N0
なぜ説明するのが困難かを説明したつもりだったんだが

263デフォルトの名無しさん (ワッチョイ f398-usPd)2018/10/20(土) 13:01:22.08ID:V0y1IBp60
つまんねーよ。シェルスクリプトに関係ある話をしろ

ってか、>>206お願い

264デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)2018/10/20(土) 14:52:07.13ID:ZWcyeiuM0
お前がつまんねーんだよ

なんかレス番飛んだけどなんだこれ

266デフォルトの名無しさん (ワッチョイ db8a-2XJB)2018/10/20(土) 16:25:12.28ID:EzXK/x1W0
>>265
自分でそういう設定してんだろ。
ngしてますアピールうざいよ。

267デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)2018/10/20(土) 17:00:11.18ID:ZWcyeiuM0
なんか遠いレスの番号という意味じゃないの。てか、なんで噛み付いているんだか

ワッチョイ変わったのになんでNG効いてんだ?と思ったら課題マンだったのか

269デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/21(日) 03:41:54.16ID:dQhyPQp/0
あるパスがディレクトリで書き込み可能かは、[ -d "$path" ] とか [ -w "$path" ] で調べられるし、
所有者が自分自身であるかは-Gや-Oで調べられますが、
自分以外が読み書き不可能であることをチェックするにはどうしたら良いですかね?

270デフォルトの名無しさん (ワッチョイ db8a-2XJB)2018/10/21(日) 05:19:47.73ID:C+Apg5Hi0
ls

271デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/21(日) 05:42:25.02ID:dQhyPQp/0
やっぱlsしかないですかね。
このフォーマットって仕様化されてるんですよね

272デフォルトの名無しさん (ワッチョイ aebe-fIkj)2018/10/21(日) 06:29:17.52ID:9NX69mCX0
>>271
pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html#tag_20_73_10

273デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/21(日) 06:34:56.07ID:dQhyPQp/0
ありがとう。だがオプション多すぎて読むのだりぃw

なんでだろ?どうもlsって解析する気にならないんだよな
人間向けのフォーマットでコンピュータが解釈するのに向いてない感じがしている
どこまでPOSIXで仕様化されてるのか、どこからが拡張なのか、オプション多すぎて(略

関係ないけど、ふと本棚を見たら
「lsを読まずにプログラマを名乗るな!」という本があったw
そういや買ったっけ(未読)

274デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)2018/10/21(日) 06:42:08.88ID:xQoMnSHc0
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html
STDOUTに記述があるんだからそうじゃね

275デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)2018/10/21(日) 06:42:50.73ID:xQoMnSHc0
あら被りすぎた。すまん

276デフォルトの名無しさん (ワッチョイ 2aa2-k6PT)2018/10/21(日) 06:45:46.73ID:xQoMnSHc0
>>273
>>272はPOSIXの仕様。>>269,270,271の目的には
If the -l option is specified, the following information shall be written for files other than character special and block special files:

If the -l option is specified, the following information shall be written for character special and block special files:
で書いてあるフォーマットだけだけどね

277デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/21(日) 07:33:05.64ID:dQhyPQp/0
そういや、macだとlsで

drwxr-xr-x+ や
drwxr-xr-x@ みたいに
後ろになにかくっついていることがあるな

> Implementations may add other characters to this list to represent other implementation-defined file types.
くっつけても良いってことなのか?

278デフォルトの名無しさん (ワッチョイ db8a-2XJB)2018/10/21(日) 11:22:28.24ID:C+Apg5Hi0
これだからマカーは馬鹿だと言われるんだなあ...

279デフォルトの名無しさん (アウアウウー Sa9f-L0SM)2018/10/21(日) 20:00:09.31ID:0dWokXAIa
stat コマンドの出力解析した方が楽ではないか?
または find コマンドの -perm 利用してチェックして -exec でやらせたいことをやらせる。

280デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/21(日) 20:21:13.14ID:dQhyPQp/0
>>279
そこででてくるのが、またPOSIXですよ

statはPOSIXで規定されてない
SolarisやUP-UXには存在しない
更にLinuxとMacでオプションもフォーマットもぜんぜん違う

281デフォルトの名無しさん (ワッチョイ f364-qPjg)2018/10/21(日) 22:04:44.47ID:8BH3p2hm0
標準入力の代わりにfileの内容を入力するのに、リダイレクトで
$ <file somecmd
とやる方式ってPOSIXで既定されてるっけ。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_01
このへんに書いてそうなんだけど、それっぽい記述がない?

282デフォルトの名無しさん (ワッチョイ 269f-nBLa)2018/10/22(月) 02:54:50.03ID:HyPH6OEy0
>>280
じゃ、find で。
ファイルのパーミッションに 066 を and した時に 0 になるやつでいいのなら
find $dir -prune ! -perm -40 ! -perm -20 ! -perm -4 ! -perm -2 -exec やらせたいこと \;
のようにすればいいのではないかな。
http://pubs.opengroup.org/onlinepubs/9699919799/ で find コマンド見てみたら -perm はあるようなので。
もし GNU の find コマンド使えるようなら -perm /mode が使えて、これは何れかのビットが立っていれば
真になるので ! -perm /66 の一つで出来ると思う。

283デフォルトの名無しさん (ワッチョイ db8a-2XJB)2018/10/22(月) 03:01:30.80ID:1Kkbm3du0
GNUのfind使っていいという条件なら、GNUのlsやstatでいいじゃんw

284名無しさん@そうだ選挙に行こう! Go to vote! (アウアウウー Sa9f-L0SM)2018/10/22(月) 10:18:21.67ID:8WYgXfgna
その辺はご自由に。POSIX縛りがあってもこの場合にfindも使えるってだけの話なので。ls使いたいならそうすればいい。

285デフォルトの名無しさん (ワッチョイ f364-qPjg)2018/10/22(月) 14:51:33.47ID:JUwIDQm90
>>281
これ分かる方います?

286デフォルトの名無しさん (JP 0H1b-v9b0)2018/10/22(月) 16:55:54.61ID:9s+yFzz3H
>>281
2.1の5で、リダイレクトの処理をしてパラメーターリストから
除去するって書いてあるのと、
6でコマンド名を第0パラメーターとして渡すって書いてるってことは、
先頭もパラメーターリストの一部と解釈できるから、
暗に、先頭にリダイレクトがあってもいいってことを表してるんでは?

287デフォルトの名無しさん (ガックシ 06e6-fIkj)2018/10/22(月) 19:08:52.43ID:WU2zxBnF6
>>286
明示はされてないのね。
でもありがとう。多分 大丈夫ということでしょう。

288デフォルトの名無しさん (ガックシ 06e6-fIkj)2018/10/22(月) 19:09:38.93ID:WU2zxBnF6
あ、ワッチョイもIDも違うけど>>285です。

289デフォルトの名無しさん (ワッチョイ ea98-Pr2h)2018/10/22(月) 21:35:03.82ID:oF7wf0Ce0
>>118
それはオブジェクト指向の話じゃない
C++の話だ

そもそもテンプレートやジェネリックは、型を明確にすることでバグを少なくしたり
速度を速くするためのもので、オブジェクト指向における問題点を解決するための追加機能

テンプレートやジェネリックを使うことでオブジェクト指向が不要になるのではなく
オブジェクト指向と組み合わせて使うことで問題点が改善される

テンプレートはオブジェクト指向と組み合わせずに使えたと思うが、
テンプレートの殆ど(ジェネリックは全て)はオブジェクト指向なしに使うことはできない

290デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/22(月) 21:47:50.25ID:oF7wf0Ce0
あ、書き込まれてないと思ったら書き込む場所間違えてたのかw

291デフォルトの名無しさん (ワッチョイ ea98-usPd)2018/10/22(月) 23:23:26.53ID:oF7wf0Ce0
ただのメモ

各シェルの比較
http://hyperpolyglot.org/unix-shells

292デフォルトの名無しさん (アウアウウー Sa9f-L0SM)2018/10/23(火) 13:27:19.16ID:QwHjyvjPa
シェルというか tar コマンドの問題なんだけど、tar tvf でアーカイブに入っているファイルのタイムスタンプを秒単位まで出す方法ある?
Linux で GNU tar のmanページ見た感じではなさそうなんだけど、やはり自作するしかないなかな。

293デフォルトの名無しさん (ワッチョイ 2a23-8h48)2018/10/23(火) 14:12:45.60ID:mYtscksw0
>>292
tar --full-time ...

294デフォルトの名無しさん (アウアウウー Sa9f-L0SM)2018/10/23(火) 14:38:56.39ID:QwHjyvjPa
>>293
おお!ありがとう。新しい GNU tar にあるね。
最初CentOS6で試しててわからなかった。これは GNU tar 1.23 だ。
CentOS7は GNU tar 1.26 になっててこちらでは出来るしmanページにも書いてあった。

295デフォルトの名無しさん (ワッチョイ f364-qPjg)2018/10/23(火) 15:22:22.26ID:cKF5Z2eR0
CentOS 6はそろそろサポート切れるんじゃないかしら
余計なお世話だが移行したほうがいいんでは

296デフォルトの名無しさん (アウアウウー Sa9f-L0SM)2018/10/23(火) 15:35:42.08ID:QwHjyvjPa
>>295
するする。仕事でRHEL6のサーバ使っててそれの一部をテストする時に使ってただけなので。

新着レスの表示
レスを投稿する