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

■ このスレッドは過去ログ倉庫に格納されています
2020/03/23(月) 01:12:30.31ID:TYte82vJ
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その32
https://mevius.5ch.net/test/read.cgi/tech/1571929725/
210デフォルトの名無しさん
垢版 |
2020/04/21(火) 16:30:27.22ID:Lx1iEb8v
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/alias.html
POSIXでも interactive utilities.って言われてるぐらいだしな
2020/04/21(火) 16:43:50.04ID:fQ5b9H0O
>>209
残念ながら、3はそうなってない
2020/04/21(火) 16:47:30.51ID:fQ5b9H0O
>>210
ちゃんと読めよ
2020/04/21(火) 16:59:29.51ID:fQ5b9H0O
>>209
>alias使ってるんでしょ?
ああ...これもか...
色々想像するのは勝手だが、なんか色々勝手な想像ばかりで全く調べてないなって感じだぞ
2020/04/21(火) 17:43:01.90ID:fQ5b9H0O
>>209,211
ああ、すまん
実行できないのは最初からだし、存在さえもしないのは3以降からだな(2では存在はするが実行時エラー)
>まあ、4からか?そういう方がいいだろうと思い変えたのだろうが
の部分は間違い勘違い、すまん
215デフォルトの名無しさん
垢版 |
2020/04/21(火) 18:23:13.41ID:Lx1iEb8v
>>213
調べるとか何のこと?
スクリプト内部でだけ使うなら関数って言ってるだけなんだけど?
21656
垢版 |
2020/04/21(火) 20:51:03.40ID:HADG6GDb
anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
~/.bashrc に、下の2行を追加するだけで、各言語ごとに追加しないでも良い

export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

結局、この追加した、eval で、rbenv という関数を読み込んでいたという落ちw
21756
垢版 |
2020/04/21(火) 20:57:08.31ID:HADG6GDb
>>165
に書いてます

シェル関数は、その関数が定義されたファイルを読み込んでいれば使えるけど、
読み込んでいなければ使えない
2020/04/21(火) 21:30:49.10ID:fQ5b9H0O
>>215
想像でそれも自分の言ったことに都合が良いだけで言うなってことだよ
すぐ下のレスに状態を本人が書いてるだろに
219デフォルトの名無しさん
垢版 |
2020/04/21(火) 21:50:22.71ID:Lx1iEb8v
rbenvはaliasをインタラクティブシェルで使ってない

だからといって、
「aliasはインタラクティブシェルで使うもの」を
否定してることにはならんのだが・
2020/04/21(火) 22:16:38.40ID:fQ5b9H0O
何言ってるの?
>>スクリプト内部で使うだけなら関数にするだけ
>と思い込んでたら、>>56みたいになるぞw
から、想像だけで「alias使ってるんでしょ?」て間違ったこと「いきなり」言い始めたんんだけど。それが関数なんてすぐ下に書いてあるのに、見も/調べもせずに「いきなり」

「スクリプト内部で使う[だけ]なら[関数]」だから、見も/調べもせずに「alias使ってるんでしょ?」なんて間違いを平気で言ったんでしょ?

aliasはインタラクティブシェルで使うものは別件で、そこは関数のことだろに


aliasはインタラクティブシェルで使うものは特に否定はしてないが、POSIXでそう決めてるわけではない。>>210を自分でちゃんと読めば>>210はなんの補強にもなってないのに誤った抽出ってこと
221デフォルトの名無しさん
垢版 |
2020/04/21(火) 22:19:02.65ID:Lx1iEb8v
「スクリプト内部で使うだけなら関数にするだけ」は
否定しないんだね
2020/04/21(火) 22:21:12.97ID:fQ5b9H0O
読めなさすぎだろう。なんでそうなる??
スクリプト内部で使う[だけ]じゃない[関数]がって例の話なのに
ダメだな読めなさすぎ、今までのでも
2020/04/22(水) 05:24:59.12ID:6NXdX+6G
お前らいつも質問者を置き去りにしてんな
2020/04/22(水) 05:43:01.59ID:Beb++bH7
こいつもう辞めた方がいいな
2020/04/22(水) 11:23:37.41ID:3RYHR+yq
質問箱スレじゃないから
2020/04/22(水) 16:58:30.97ID:UC4McjLk
枯れた技術のスレで質問禁止にしたら超絶過疎っちゃうよ
2020/04/22(水) 18:17:22.60ID:hVJ7sunP
質問禁止という意味じゃない。質問もありだし質問のをネタにしたのもあり
質問箱スレならQ/A以外は雑音にしかならんという意味
228デフォルトの名無しさん
垢版 |
2020/04/23(木) 02:03:46.11ID:SDkT6EOl
cronの書式を読み取りたいんですがなぜかファイル名が読み取られてしまいます。なぜでしょうか?
2020/04/23(木) 22:30:55.15ID:LOz3K8jb
どうやったらそんな挙動になるんだ?
ちょっとどんなコマンド打ったか書いてみて。
230デフォルトの名無しさん
垢版 |
2020/04/23(木) 23:01:10.88ID:UKSnHl0c
>>228
クォートしてないからでしょ
$ ls
crontab
$ echo * * * * * user-name command to be executed
crontab crontab crontab crontab crontab user-name command to be executed
$ echo "* * * * * user-name command to be executed"
* * * * * user-name command to be executed
2020/04/24(金) 00:57:40.18ID:QUI7MWka
>>229
setを使ってスペース区切りで分割したらファイル名になりました

>>230
そこから各フィールドごとに分割するのはどうしたらいいでしょうか?
2020/04/24(金) 01:55:29.65ID:oLSoKJut
awk使っちまうなあ
楽チンで
2020/04/24(金) 02:13:20.42ID:QUI7MWka
その後シェルスクリプトで処理をしたいんです。
2020/04/24(金) 02:56:11.86ID:F2FblhOM
read
2020/04/24(金) 03:11:08.96ID:F2FblhOM
cat /etc/crontab | grep -v '^[ \t]*#' | while read m h D M W u c; do [ "$c" != '' ] && echo "$M/$D $W $h:$m ($u) $c"; done
でいいのかな??

しかし、>>228から * のGLOB展開とわかるなんてすげえなw>>230
2020/04/25(土) 23:21:25.07ID:dkVnBOhV
他スレで -z とか見て思い出したんだけどさ
[ -z "$str" ] とか [ -n "$str" ] って必要なの?
[ "$str" ] とか [ ! "$str" ] でいいと思うんだけど?

[ "$op" "$str" ] みたいに演算子を変数に入れられるから
機能そのものが不要だとはは思わないけど
通常は [ "$str" ] や [ ! "$str" ] で良くない?
他の言語だとこっちだからわかりやすいし
2020/04/25(土) 23:31:42.54ID:gS2ps0hn
他の言語だったらそういうのはBooleanでしか使わないという文化な人々も居る
[ -z "$str" ] や [ -n "$str" ] よりも [ "$str" = "" ] とか [ "$str" != "" ] の方が見る機会が多かったな
238デフォルトの名無しさん
垢版 |
2020/04/25(土) 23:59:47.04ID:Ey2ZfVC3
>>236
先頭にマイナス記号が入らないことが保証されるのならいいのでは?
2020/04/26(日) 00:16:24.29ID:D7tlSM02
>>238
関係ないでしょ? その場合こう展開される
[ "-z" ] または [ "-n" ] これはどちらも文字列があるから0

[ ] で囲まれた中身が1個の場合は決してオペレータとして扱わないのだから
どんな文字が来たとしても問題ない。空文字以外は0となる
ついでにいうと [ ] の中身が0個の場合は常に非0

そもそも [ ] (test)のドキュメントに
STRING は -n STRING と等価と書かれている
仕様通り
240デフォルトの名無しさん
垢版 |
2020/04/26(日) 03:16:05.39ID:cVjuSaki
>>239
他の条件とand/orされる場合は?
2020/04/26(日) 03:17:32.99ID:D7tlSM02
>>240
-a と -o に関しては、shellcheckさんが禁止しております
[ 略 -a 略 ] は使いません。必要なら [ 略 ] && [ 略 ] こうします
242デフォルトの名無しさん
垢版 |
2020/04/26(日) 03:29:33.94ID:cVjuSaki
>>241
そういう独自ルールを適用するならそれで良いんじゃねえか?
ただ独自ルールだからそれとセットで説明する必要がある。
2020/04/26(日) 04:31:48.38ID:D7tlSM02
>>242
ん?でもさ -a とか -o 使っても問題ないんじゃね?
[ str -a ] みたいなのってありえないんだからさ[ -a -a ] もないでしょ?
[ -a -a -a ] だと 最初と最後が文字だって一意に識別できるよね?

訂正する
> 他の条件とand/orされる場合は?

他の条件とand/orされる場合 かつ 混乱するようなパターンってありえるの?
244デフォルトの名無しさん
垢版 |
2020/04/26(日) 04:38:33.47ID:cVjuSaki
>>243
シェルというかtestコマンドってそんなに賢く自動判別してくれるの?
これからそういうシェルまたはtestコマンド作るって話?
だったら作ればいいんじゃね?そうすればそれはそういうものですって言えるしそれでokだ。
2020/04/26(日) 04:48:09.65ID:D7tlSM02
なんでシェルをディスってるの?
これからも何も「testは賢く判断するから問題ないよね」って聞いてるだけなのに
2020/04/26(日) 04:53:55.28ID:D7tlSM02
>>244
こういえば良いのか?
POSIXで決まっている仕様どおりの正しい動きです。
これから作る必要など全くありません。
247デフォルトの名無しさん
垢版 |
2020/04/26(日) 04:56:34.45ID:cVjuSaki
あ、そう。じゃあそれでいいんじゃね?
2020/04/26(日) 06:08:44.50ID:D7tlSM02
何が気に食わないんだろう(笑)
2020/04/26(日) 14:42:15.32ID:v6fWLjMY
>>236と同一人物に見えて俺流儀の押し付けしたいのか何をしたいのかだろな
2020/04/26(日) 15:26:53.79ID:D7tlSM02
質問者 (POSIX準拠の仕様)これ問題ある?
回答者 問題あるに決まってるだろ。あれとかこれとかどうなんだ?

質問者 それらは問題ないよね?
回答者 お前の流儀を押し付けるな!

なんだこのながれ
2020/04/26(日) 15:35:41.02ID:UR76YMSe
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2020/04/26(日) 15:55:10.56ID:D7tlSM02
まともなレスじゃなくて、個人たたきに変わったからな
POSIXの仕様にたいして俺流儀とかアホかと
2020/04/26(日) 18:41:28.13ID:vc5fDz2w
それ以上POSIXを唱えるな
奴が来る
254デフォルトの名無しさん
垢版 |
2020/04/28(火) 06:27:22.31ID:6K6MgdzD
ハクション大魔王2020は面白いな。
2020/04/28(火) 08:02:31.62ID:w59d7UdO
俺流儀に見えたってことはそういうことでは
虚栄心だけじゃ何も学べないよねぇ
2020/04/28(火) 08:18:47.52ID:+3UriQww
詠唱




────POSIX準拠



 
2020/04/28(火) 13:15:20.29ID:85h3VPXT
宗教みたいだぁ…(直喩)
258デフォルトの名無しさん
垢版 |
2020/04/28(火) 15:22:47.80ID:7mVXavmj
宗教だろ…(直球)
2020/04/29(水) 07:41:19.70ID:kBxqIvnv
お前のログインシェルをfishにしてやろうか
2020/04/29(水) 13:35:45.09ID:CfLIzb8G
>>259
それはPOSIX準拠?
2020/04/29(水) 14:00:43.59ID:/shWL0SW
ねたにまじれす
2020/04/29(水) 18:18:56.88ID:i2PPpjMR
最近Oil ShellのPOSIX準拠度が高まってきて嬉しい(これはネタじゃない)
2020/04/29(水) 18:42:59.47ID:cpDKktQc
メジャーリリースしたら教えてくれ
2020/04/29(水) 20:13:29.94ID:sus1L+2H
POSIX準拠度が完全になったら教えてくれ
2020/04/29(水) 20:20:23.45ID:sus1L+2H
ち、やっぱり set -uしたときにecho ${A+x} ってしたら
fatal: Undefined variableで落ちるじゃねーか
変数が定義されているかのチェックすら出来ねぇ
2020/04/29(水) 21:34:42.01ID:i2PPpjMR
>>265
そこでissueですよ
2020/04/29(水) 22:37:55.93ID:sus1L+2H
>>266
立て逃げしていいならするけどさ、やり取りが面倒なんだよ
この程度ででるぐらいなら他にも問題たくさんありそうだしstar多いんだろ?誰かが頑張ってくれ
それかすでにあるんじゃねーの?OilShellがどこまで本気なのか知らんが、
まがりなりにもPOSIX準拠を名乗りたいのなら絶対には対応していないといけない
基本機能だからな。(変数定義確認方法のFAQレベルだぞこれは)
俺にとっては数あるシェルの一つでしかないし別件で忙しい
2020/04/30(木) 01:05:28.49ID:vtgsH/Bs
POSIX互換を謳う俺々シェルの利点って何なの
わざわざ作るってことは今のPOSIXは不備あるのか
2020/04/30(木) 07:55:57.21ID:zGlfElvR
>>268
今のPOSIXに不満があったらPOSIX準拠シェルなんて面倒なもの態々作らんと思うが
2020/04/30(木) 08:09:08.08ID:04alJDEx
作るだろ?不満があったから新しいものを作る
ただし移行パスがなければ移行しないのでその方法を提供する
よくある話だ
2020/04/30(木) 12:57:36.00ID:pg6Bqb9H
>>270
たぶん「準拠(互換)」の部分について言及してるんだと思うよ
272デフォルトの名無しさん
垢版 |
2020/04/30(木) 13:50:18.05ID:VId2oWrE
>>268
https://www.oilshell.org/blog/2018/01/28.html
273デフォルトの名無しさん
垢版 |
2020/04/30(木) 14:31:36.43ID:gdZAiUWY
学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net

数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

PS 連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
274デフォルトの名無しさん
垢版 |
2020/04/30(木) 14:31:36.48ID:gdZAiUWY
学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net

数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

PS 連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
2020/04/30(木) 19:17:59.10ID:0zEyt4z5
POSIX
抽出レス数:28

スレタイに【POSIX】いれとけよ
2020/04/30(木) 19:21:05.71ID:04alJDEx
>>275

>>1より
> ・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
>  特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)

別にPOSIX前提ではない。レス28は多くない。
2020/04/30(木) 22:12:56.14ID:3EPTcWkg
posix準拠かどうかを自動判定するプログラムはないのか?
2020/04/30(木) 23:40:43.12ID:02DTS3d8
bash、tcsh、zsh などが持つ拡張機能を持たない
POSIX互換を目指す
シェルで -n で
2020/05/01(金) 12:30:18.70ID:xBnPf/RZ
>>275
例えば「C言語総合スレ」で
ISO CやJIS Cについての言及が全スレ中10%を占めていたとして,
そのことを以って「スレタイにISO C/JIS Cって明記しろ!」って言う?
いや,言うんだったら,まあ何も言えないけどw
280デフォルトの名無しさん
垢版 |
2020/05/02(土) 20:03:36.40ID:nkPqW+JC
Oil Shellって実装されてない機能、実は多くね?
どこかに一覧でまとめられてるじゃないかと思うんだけど
わかってて未実装なのか、忘れられてるのかどっちなのかわからん
報告すべきなのかどうか
2020/05/02(土) 20:48:38.90ID:SU0LbRTW
「実は」っていうか,べつに公式に「POSIXに完全準拠しました!」なんて言ってねーしなw
ただ単に着実に対応していっているっていう,それだけ。
まだ1.0ですらないし,何を期待してるんだか。
282デフォルトの名無しさん
垢版 |
2020/05/02(土) 21:33:14.83ID:nkPqW+JC
うん。聞いてるのは実装されてる機能されてない機能の一覧ね
いい加減、反論されたクソって!思い込んで突っ走るのはやめようよw
2020/05/02(土) 23:08:33.17ID:DEDgA8fc
自己紹介
2020/05/03(日) 12:41:29.86ID:Wpoh2lE+
Oilシェルに親でも殺されたのかな?(すっとぼけ)
2020/05/10(日) 09:42:55.33ID:6Ru0pW3/
fishって、プロセスの生成にposix_spawnを使っていると小耳に挟んだのですが。
macOS等、fork+execよりposix_spawnが速いとされる環境で使ったらbashとかより
性能が上がったりしますかね?
286デフォルトの名無しさん
垢版 |
2020/05/10(日) 14:52:33.76ID:wRm6C2I1
1ミリ秒ぐらいは上がるんじゃね?w
2020/05/10(日) 18:28:06.52ID:pQcD5gxy
では、赤射プロセスをもう一度見てみよう
288デフォルトの名無しさん
垢版 |
2020/05/10(日) 19:18:19.90ID:JqEAqVcs
>>285
https://github.com/fish-shell/fish-shell/issues/3149#issuecomment-226923645
289デフォルトの名無しさん
垢版 |
2020/05/12(火) 11:30:45.83ID:yS+J4vmz
このシェルスクリプトは面白そう
https://www.youtube.com/watch?v=v80QzGYktK8
2020/05/12(火) 16:59:01.34ID:nXypJmVq
実装が面白いのかと思ったら発想が面白かった
291デフォルトの名無しさん
垢版 |
2020/05/17(日) 19:47:04.17ID:bpPzQdIC
https://qiita.com/twrcd1227/items/35c4cdc12581b75204a5

> マジックナンバー
> マジックナンバーとは#!のこと
> シェルスクリプトの先頭には以下のようになんのシェルを使うのか明示する。

ばーかw
2020/05/17(日) 20:43:06.44ID:09BYrd1c
直接コメントしたれよ。こんなとこで晒すとか、くれえやつだな
マジックナンバー自体も知らないアレだとしても
293デフォルトの名無しさん
垢版 |
2020/05/17(日) 22:09:25.20ID:cPnKiUuj
https://en.wikipedia.org/wiki/Shebang_(Unix)#Magic_number
2020/05/18(月) 02:25:23.58ID:JVwpbSde
本人登場かという勘違いぶり
2020/05/18(月) 11:03:25.77ID:hn05DOX5
なんつーか、入門書としては酷いから訂正しなけれいけないレベルだが
初心者が頑張って背伸びして書いていると思うと
それをめためたに指摘しまくるのも大人げないんだよなw

と思ったが、
https://qiita.com/twrcd1227/items/b7d6e16aa4e9f895a831
> 入門UNIXシェルプログラミングを読んでいく

これ、本当にこの本に書いてあることなのか?
この本有名だし流石にそんなことはないと思うが

> % echo $SHELL #今使ってるシェルの種類を調べる
真っ先から間違いなんだよな。
× 今使ってるシェル
○ ログイン時のシェル。例えばbashでログインしてzshに切り替えてもbashのまま
2020/05/18(月) 11:05:59.88ID:vvPis8aR
>>291
これがマジックナンバーじゃなかったら何をもって ELF と
シェルスクリプトの違いを判断している?
2020/05/18(月) 11:28:16.49ID:vvPis8aR
>>295
ログインシェル zsh にしてログイン後に bash 起動したらSHELL が /bin/bash にならね?
「ログイン時のシェル」は流石に「今使っているシェル」よりなお悪いんじゃねーか?

各シェルの SHELL (と shell) の変数に関する実装によるが比較的今使っているシェル
だろうとみなせる、というほうがまだ正しそう。

文脈を見てみないとわからんが、プログラム側からシェルの種類を気にするのは
ssh-agent みたいに環境変数のセットのためのコードを返すプログラムぐらいだから
csh 系ユーザかどうかだけ拾うって程度で、細かい所までは考えてないでしょ
2020/05/18(月) 13:55:14.67ID:hn05DOX5
>>296
マジックナンバーが#!(シバン)のことなのではなく
#!(シバン)がマジックナンバー(の一種)

違いわかる?


「アルコールとは酒のこと」といえば間違ってると理解できる?

あ、これアルコールって書いてある!つまり酒だな!ごくごくって
(消毒用)アルコールを飲むやつはアホだろう
2020/05/18(月) 13:56:31.78ID:hn05DOX5
>>297
> bash 起動したらSHELL が /bin/bash にならね?

なぜそこで質問する?
わからないなら自分で調べろよ。

質問じゃないなら「/bin/bash になる」とお前は言うはずだ
2020/05/18(月) 14:00:45.61ID:hn05DOX5
ま、お前程度のやつが知らなくても仕方ないな。
有名な某あのツールですら十数年?も前から
間違っててバグ放置されてるんだしなw
(最近報告されてたんで俺は報告しないよ)
2020/05/18(月) 14:22:20.13ID:vvPis8aR
>>300
顔真っ赤にして連騰して恥ずかしい奴だなぁ、お前
まずはログイン時のシェルにならない事について謝れよ
2020/05/18(月) 14:41:09.47ID:hn05DOX5
>>301
https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html

SHELL
This variable shall represent a pathname of the user's preferred command language interpreter.

はい、ばーか確定(笑)
2020/05/18(月) 16:08:58.16ID:vvPis8aR
>>302
すまん、リンク先は見ていないがその英文で「ログイン時のシェル」と解釈
しているのかな、君は?

恥ずかしい書き込みしたんだから ID ぐらい変えて書き込もうよ。
2020/05/18(月) 21:10:24.48ID:hn05DOX5
>>303
じゃあ逆にお前は何を持って自分が正しいと思ってんだ?
なにか一つでも証拠を持ってこれるのか?
これないだろ?先に言っておく。俺はあと一つ証拠を持ってこれる。
謝るなら今のうちだぞ?
2020/05/19(火) 00:50:38.43ID:4QqJ5tyy
出だしが>>296と無知ぶりを発揮してのでよく頑張るなと思わせるw
2020/05/19(火) 08:40:51.02ID:+8IfJNam
>>304
その証拠って、ログインシェルを zsh にしてログイン後に bash 起動しても
SHELL 環境変数が zsh になってる件ですかね?w
2020/05/19(火) 10:14:32.16ID:zOKQOBke
>>306
反論したいんでしょ?あなたの意見の根拠を聞いてるんですが、そっちはどうしたんですか?
(私が主張していることを証明している)事実だけを言われても困るんですがw
2020/05/19(火) 11:45:35.05ID:+8IfJNam
>>307
根拠あげろって最初に挙げたでしょうに。
俺の環境ではログインシェルを zsh にしてログイン後に bash 起動したけど
SHELL 変数は /bin/bash でしたよ?
309デフォルトの名無しさん
垢版 |
2020/05/19(火) 12:42:00.98ID:zOKQOBke
>>308
それと同じことを言ってる人をググって見つけてこれる?
そういうのが根拠。誰もいないよね。

「俺は○○だ」は根拠じゃなくてお前の主張
その主張の根拠を見つけてきてって言ってるのに
主張を繰り返されても困るw
2020/05/19(火) 15:11:40.95ID:+8IfJNam
>>309
お前の環境で実行しろよオイ
ファビョり方に無理が出てるなあとは思ったが流石にもうお前は終わりだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況