[過去ログ] シェルスクリプト総合 その31 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
11: デフォルトの名無しさん [sage] 2019/08/11(日) 09:06:35.23 ID:++HFlOfG(1/35) AAS
>>10根拠を自分で考えるってことができない性格なんだねw
12: デフォルトの名無しさん [sage] 2019/08/11(日) 09:08:41.84 ID:++HFlOfG(2/35) AAS
Version 7 UNIX の sh(1)やHeirloom Bourne Shellが
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)
13: デフォルトの名無しさん [sage] 2019/08/11(日) 09:11:01.36 ID:++HFlOfG(3/35) AAS
外部リンク[html]:heirloom.sourceforge.net
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません
14(1): デフォルトの名無しさん [sage] 2019/08/11(日) 09:14:38.09 ID:++HFlOfG(4/35) AAS
(あ、これ、いつもの人かな?推論能力が圧倒的に低くて、書いてある内容から
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)
17: デフォルトの名無しさん [sage] 2019/08/11(日) 09:44:11.25 ID:++HFlOfG(5/35) AAS
あー、やっぱり読み取れないんだ・・・
18: デフォルトの名無しさん [sage] 2019/08/11(日) 09:47:59.57 ID:++HFlOfG(6/35) AAS
かわいそうだから、せめて日本語訳にしてあげるね。
家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。
Bourneシェルは
・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。
・レガシースクリプトの処理。
いくつかの歴史的なスクリプトは、Bourneシェル独自の言語機能を使用していました。
それらをポータブルシェル言語に変換するのは難しい場合があるため、
Bourneシェルを使用して実行するのが便利な代替手段です。
・一般的なスクリプト処理。
Bourneシェルは、新しいUnixシェルほど多くの機能を提供しませんが、それでも非常に使いやすいスクリプト言語です。
また、Bourneシェルの言語は20年近く安定しており、この実装でも引き続き安定しています。
これにより、プログラマーが慣れ親しんだBourneシェルは驚くことのないスクリプト言語になります。
これは、新しいシェルの多くとは言えません。
・インタラクティブな使用。
Bourneシェルは、jshとして呼び出され 、端末で実行される場合、ジョブ制御を提供します。
もちろん、コマンド履歴、コマンドライン補完などの派手な機能はありません。しかし、これらの機能を使用すると、
ユーザーの注意をそらす傾向があります。慣れの段階の後、Bourneシェルを使用すると、
より均一で集中的な作業スタイルになります。試してみる。真剣に。
19: デフォルトの名無しさん [sage] 2019/08/11(日) 09:48:21.88 ID:++HFlOfG(7/35) AAS
これで(他の人は)理解できたやろ?w
21: デフォルトの名無しさん [sage] 2019/08/11(日) 10:00:36.39 ID:++HFlOfG(8/35) AAS
あそんでるだけやで、昨日からの続きで
28: デフォルトの名無しさん [sage] 2019/08/11(日) 14:43:52.88 ID:++HFlOfG(9/35) AAS
>>2424(1): デフォルトの名無しさん [sage] 2019/08/11(日) 11:19:28.31 ID:OeRZAsFl(1/2) AAS
>>7,10
derived from OpenSolaris code and thus implements the SVR4/SVID3 level
だから、Version 7 UNIX というのはいきなりっぽい
Version 7 UNIX の sh の重要性がまったくわからんが、SVR4 よりは重要、Version 7 UNIX の正当な流れを汲んだうちでの(ソースレベルで?)一番近いから、Version 7 UNIX としたんじゃないかな、そもそもソコを書いた人は
SVID3 は POSIX以前の時期での標準を作ろうとした規格のようなので、「POSIX shを最もよく実装してる」は無いんじゃないかな。SVID3とPOSIXの差異近似がわからんけど
あんま興味ない(使うことはないから)けどチラっと調べた範囲では。調べてもあんま興味わかないなw
> Version 7 UNIX の sh の重要性がまったくわからんが
それな。
「Version 7 UNIX の sh(1) に一番近いのは〜」を最初に書いた当時は
まだレガシーなシェルスクリプトが存在したのかもね
このスレ元々UNIX板にあったわけだし
Heirloom shも(世間がPOSIX準拠になりつつある中)
レガシーなスクリプトを処理するために作った書かれてるし
日付を見ると2010年の話?
一般に商用UNIXと呼ばれるもの(macOSは含めない)が
閉鎖的で情報が共有されなくて、質問されても誰も確認できないでしょ?
Linuxばかり使われるようになった。だからその文章も時代に合わない。
次からは修正しておくよ。
29: デフォルトの名無しさん [sage] 2019/08/11(日) 15:06:11.53 ID:++HFlOfG(10/35) AAS
テンプレで質問
> ・ワイルドカードは正規表現ではありません。
みんなワイルドカードって呼ぶ? MS-DOSではワイルドカードって言ってたけど
なんとなく最近聞かない気がする。かと言ってグロブと呼ぶか?というとそれも詳しい人ぐらいしか
> ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
-xオプションと似たやつに-vってのがあるんだね。
みんな使ってる? 俺は使ってみるも、たくさん実行がでてきて面倒くさくて結局見なかったことにしちゃうw
30: デフォルトの名無しさん [sage] 2019/08/11(日) 18:20:03.32 ID:++HFlOfG(11/35) AAS
/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった。
今作ってやってみたけど、やっぱり、bashだとecho -n helloは
(POSIXにはない)-nを認識するね。
# which sh
/bin/sh
# /bin/sh
sh-3.2# ls -l /bin/sh
lrwxrwxrwx 1 root root 19 Aug 11 09:14 /bin/sh -> /usr/local/bin/bash
sh-3.2# sh --version
GNU bash, version 3.2.57(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh-3.2# sh
sh-3.2# echo -n hello
hellosh-3.2# exit
exit
sh-3.2# bash --posix
bash-3.2# echo -n hello
hellobash-3.2#
前スレ>>996はMacかな? (x86_64-apple-darwin18)って書いてるからそうだろうね。
Macの環境はビルドがおかしいのか時折変な動きをする。
32: デフォルトの名無しさん [sage] 2019/08/11(日) 18:24:58.94 ID:++HFlOfG(12/35) AAS
へー、たしかに、macOS Mojaveのデフォルト(homebrewではない)のbash 3.2.57だと
echo -n hello が -n hello になるねw
これはひどいwww
なんでだろ。ちょっと調べてみるか。
その前に一言。だからPOSIX準拠で作れと言っただろー!
35(1): デフォルトの名無しさん [sage] 2019/08/11(日) 18:27:23.91 ID:++HFlOfG(13/35) AAS
>>3131(3): デフォルトの名無しさん [sage] 2019/08/11(日) 18:24:50.03 ID:k+c7cOcw(1/23) AAS
ええぇ、自分でMacもって言ってなかったかな?
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w
デフォルトはHomebrewのbashに切り替えてるのでね。
まさかbashで同じバージョンなのに、Linuxで-nを改行なしオプションと認識して
macOSだと-nを解釈しないとは思わなかった。
まだぐぐってないけど、これ話題になってるんじゃね?
36: デフォルトの名無しさん [sage] 2019/08/11(日) 18:27:43.86 ID:++HFlOfG(14/35) AAS
>>33そういうお前の自説を述べられてもw
41: デフォルトの名無しさん [sage] 2019/08/11(日) 18:36:37.47 ID:++HFlOfG(15/35) AAS
(macから書き込んでるからID変わってるかも)
まずmacの/bin/shはシンボリックリンクではなく、
またファイルサイズが違っているので /bin/bash と完全に同じものでは無いのがわかる
(おそらくビルドオプションの違いだろう)
$ ls -al /bin/sh /bin/bash
-r-xr-xr-x 1 root wheel 618416 5 4 16:04 /bin/bash
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
にもかからわず、同じバージョン番号を名乗っている
(ビルドオプションが違うだけだから当然ともいえるが)
$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
そして想像つく通り、echo -n の挙動が違う
$ /bin/sh -c 'echo -n hello'
-n hello
$ /bin/bash -c 'echo -n hello'
hello%
43: デフォルトの名無しさん [sage] 2019/08/11(日) 18:38:56.40 ID:++HFlOfG(16/35) AAS
>>3939(2): デフォルトの名無しさん [sage] 2019/08/11(日) 18:31:38.54 ID:k+c7cOcw(5/23) AAS
>>31
デフォルトと/bin/shは違うんですけど。/bin/shも書き換えてんのか。OSのアップデートで書き換えられるのに。まあ、ご自由にだから、いちおう信じてあげようw
でも、オマ環を理由にするのは情けないw
結局Appleが悪いにして自分のアホな妄想を否定するのはないんだな。さすがだよ
デフォルトっていうのは、OSのデフォルトシェルの話じゃなくて
デフォルトで使ってるシェルって意味だよ。
bash だけで起動するシェル。ログインシェル。
45: デフォルトの名無しさん [sage] 2019/08/11(日) 18:45:07.11 ID:++HFlOfG(17/35) AAS
>>42お前の理屈は、
1. 前スレ>>975975(3): デフォルトの名無しさん [sage] 2019/10/26(土) 11:29:02.54 ID:3fttRo5u(5/9) AAS
質問が出てる時点で、意図がわからないコードってことなんだがw
957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954
それってTRUE=0とするのと何が違うの?
それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ
は、Macを使ってるに違いない!
2. だけど実行したら動かないから、実行してないに違いない!
3. だから、うっかり #/bin/sh にしてしまったに違いない!
4. コピペもしてない!
という根拠ない想像に基づくものだろ?
俺の理屈は「普段から Macでecho -n を使ってる人なら
Macでecho -nが動かないのを知らないはずがない」から
普段、echo -n が動く環境を使ってる。というお前とは正反対の前提なんだよ。
だからecho -nの部分に書き間違いはなく
[[ ]] がbash依存であることを知らなかったという結論
48: デフォルトの名無しさん [sage] 2019/08/11(日) 18:48:15.91 ID:++HFlOfG(18/35) AAS
まあおかげでPOSIX準拠にするべき理由が一つ増えたじゃないかw
同じbashを使っていても、挙動が違う場合がある
POSIX準拠で書きましょう
49(1): デフォルトの名無しさん [sage] 2019/08/11(日) 18:48:32.49 ID:++HFlOfG(19/35) AAS
>>46なにもやらかしてないけど?
50: デフォルトの名無しさん [sage] 2019/08/11(日) 18:48:53.43 ID:++HFlOfG(20/35) AAS
>>47bash依存するとそうなるだけw
52: デフォルトの名無しさん [sage] 2019/08/11(日) 18:49:53.93 ID:++HFlOfG(21/35) AAS
宣言
今度から、echo -n を見かけたら、それはPOSIX準拠してないので
printfを使いましょうと書き込むことにする。
53(1): デフォルトの名無しさん [sage] 2019/08/11(日) 18:50:32.73 ID:++HFlOfG(22/35) AAS
>>5151(2): デフォルトの名無しさん [sage] 2019/08/11(日) 18:49:00.05 ID:k+c7cOcw(10/23) AAS
>>ID:++HFlOfG
なんで逃げる、やらかしたのは明らかだろう。カスなのか?
まあ、想像できるよ、常時偉そうにしたいんだもんな。普通のレス、単純なミスに対してもたかーいところからのいきなりなダメだしとか普通だもんな。そんなお前が自分の過ちを認めたらプライドがズタズタにでもなるんだろう
...カスだなw
お前、文句言ってるだけじゃんw
やらかしてる部分はどこかを書けば、
やらかしてないという説明をしてあげるよ?
56: デフォルトの名無しさん [sage] 2019/08/11(日) 18:54:05.02 ID:++HFlOfG(23/35) AAS
外部リンク[php]:hints.macworld.com
> This is not a bug. As OS X 10.5 is now certified to follow the Single Unix Specification, its /bin/sh and echo builtin now follow the specification
なるほど。OSX 10.5から仕様変更されたっぽい。
これAppleがオレオレパッチ当ててるのでは?
bash標準ではなさそうな気がする。
流石にAppleのオレオレパッチまではしらんてw
57(2): デフォルトの名無しさん [sage] 2019/08/11(日) 18:54:43.01 ID:++HFlOfG(24/35) AAS
な?さっきから俺はシェルスクリプトの話題をしてる。
ID:k+c7cOcw は、俺の話題しかしてない(笑)
59: デフォルトの名無しさん [sage] 2019/08/11(日) 18:56:17.71 ID:++HFlOfG(25/35) AAS
10.4まではmacOSのbashは-nを改行なしと認識していたそうだ
> In fact, I tried echo -n from bash and sh on my 10.4 system and my Linux system and in all cases,
> the -n was recognised as a switch. On both of those machines, /bin/sh and /bin/bash were identical (in fact, on the Linux box, /bin/sh was a symlink).
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.056s