[過去ログ] シェルスクリプト総合 その31 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(3): 2019/08/10(土)23:17 ID:L+B8OP2P(1/5) AAS
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その30
2chスレ:tech
2
(3): 2019/08/10(土)23:19 ID:L+B8OP2P(2/5) AAS
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
 つまりシバンは #!/bin/sh です。
 特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
  macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
   自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
   ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
  FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
  Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
  macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
省16
3
(1): 2019/08/10(土)23:21 ID:L+B8OP2P(3/5) AAS
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
 シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたら man(1) を引きましょう。
・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。

回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。
 安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。
4
(1): 2019/08/10(土)23:21 ID:L+B8OP2P(4/5) AAS
参考リンク

Bourne shellの種類とか歴史とかシェルの挙動とかいろいろ詳しい
https://www.in-ulm.de/~mascheck/
5
(1): 2019/08/10(土)23:57 ID:L+B8OP2P(5/5) AAS
関連スレ

【Bash】Windows Subsystem for Linux【WSL】6
2chスレ:linux

Bashでプログラミング [転載禁止](c)2ch.net
2chスレ:linux

シェルスクリプト総合 その28
2chスレ:unix

zsh その7
2chスレ:unix
省2
6: 2019/08/11(日)00:00 ID:GFStkW/c(1/3) AAS
【POSIX】 sh系互換 シェルスクリプトスレ
2chスレ:tech
7
(2): 2019/08/11(日)02:27 ID:d6NgfAAh(1/5) AAS
テンプレの「Version 7 UNIX の sh(1) に一番近い」ってそんな根拠ある?
むしろ「POSIX shを最もよく実装してる」ほうが適切な表現じゃね?
8
(1): 2019/08/11(日)02:56 ID:GFStkW/c(2/3) AAS
>>7
Heirloom shのことだとして(意図的だろうけど)POSIX shではなく
レガシーなBourne shellに近いから「Version 7 UNIX の sh(1) に一番近い」なんだよ

つまり、Version 7 UNIX の sh(1) は Bourne shell。
具体的には ArithmeticExpression $((1+2)) や
Parameter substitution のうち ${p#foo} や ${p%bar} みたいな
POSIXの仕様を実装してない。
9: 2019/08/11(日)03:02 ID:GFStkW/c(3/3) AAS
もちろん次点のdashはPOSIX shを実装してる。
「最も」かどうかはしらんけど
10
(2): 2019/08/11(日)06:42 ID:d6NgfAAh(2/5) AAS
>>8
いや根拠ある?(公式文書内の発表とかで。無い気がする。)
しつこくてごめんね。小さいことが気になる性格なの。

Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century.
http://heirloom.sourceforge.net/sh.html
11: 2019/08/11(日)09:06 ID:++HFlOfG(1/35) AAS
>>10
根拠を自分で考えるってことができない性格なんだねw
12: 2019/08/11(日)09:08 ID:++HFlOfG(2/35) AAS
Version 7 UNIX の sh(1)やHeirloom Bourne Shellが
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)
13: 2019/08/11(日)09:11 ID:++HFlOfG(3/35) AAS
http://heirloom.sourceforge.net/sh.html
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません
14
(1): 2019/08/11(日)09:14 ID:++HFlOfG(4/35) AAS
(あ、これ、いつもの人かな?推論能力が圧倒的に低くて、書いてある内容から
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)
15: 2019/08/11(日)09:16 ID:lm+uP+yI(1/2) AAS
前スレ埋めてこいよw
16: 2019/08/11(日)09:42 ID:d6NgfAAh(3/5) AAS
>>14
ワロタw
お前のそれは「推論」じゃなくて「論理の飛躍」だよ
17: 2019/08/11(日)09:44 ID:++HFlOfG(5/35) AAS
あー、やっぱり読み取れないんだ・・・
18: 2019/08/11(日)09:47 ID:++HFlOfG(6/35) AAS
かわいそうだから、せめて日本語訳にしてあげるね。

家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。

Bourneシェルは

・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。
省14
19: 2019/08/11(日)09:48 ID:++HFlOfG(7/35) AAS
これで(他の人は)理解できたやろ?w
20: 2019/08/11(日)09:55 ID:FACDvm3m(1/2) AAS
ムキーってなってるの?そんなに連投して
1-
あと 982 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.287s*