X



シェルスクリプト総合 その34
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/08/21(金) 15:17:55.64ID:mArnj/tT
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
0523デフォルトの名無しさん
垢版 |
2020/09/24(木) 23:25:44.41ID:92vN9a+2
うう。リロード忘れてとっくの昔に終わった話にレスを・・・orz
0524デフォルトの名無しさん
垢版 |
2020/09/24(木) 23:27:34.11ID:92vN9a+2
あ、まだ終わってなかったかな?
まあでもたいした事書いてないからどうでもいいや。俺のことは忘れてくれ。
0526デフォルトの名無しさん
垢版 |
2020/09/25(金) 19:30:49.67ID:mj+ujYgo
普通に使うな。逆になんで使わないと思うのか不思議
lsで問題があるようなら言うような別のをにするけど
0527デフォルトの名無しさん
垢版 |
2020/09/25(金) 20:48:34.96ID:3RZRIqWS
いろんなコマンドを臨機応変に使うことが気になる質だったんやろ。
好き好きとしか。
0528デフォルトの名無しさん
垢版 |
2020/09/25(金) 21:48:25.44ID:jsxvfqFg
>>526
POSIX限定コマンドじゃないなら
ls以外でほとんどのことができるからでしょ
macOSがオプション違っていて面倒くさすぎるってのを除けば
パーミッションとかもstatコマンドで取得できるし

それにしてもWindowsはLinuxに対応したから楽になったけど
macOSはBSD系だからローカルでテストして
そのままサーバーに持っていくってのが難しくなってるなw
0529デフォルトの名無しさん
垢版 |
2020/09/25(金) 21:49:09.32ID:jsxvfqFg
訂正
POSIX準拠コマンドに限定しないなら
ls以外でほとんどのことができるからでしょ
0531デフォルトの名無しさん
垢版 |
2020/09/26(土) 00:51:51.88ID:QU/lr7ZN
>>530,527
ああ、
>コマンドを臨機応変に使うことが気になる質
は、他の人を指してるとも読めるな。そっちのつもりならすまん
0533デフォルトの名無しさん
垢版 |
2020/09/26(土) 02:34:50.07ID:QU/lr7ZN
>>532
>>531の、
>コマンドを臨機応変に使うことが気になる質
は「ことが気になる質」余分だった「コマンドを臨機応変に使う」だなと書き込んだ後で気がついた。まあいいかとほっといた(真逆(?)なんだが)。すまん

なんとなくw理解。どうも&重ね重ねすまん
0534デフォルトの名無しさん
垢版 |
2020/09/28(月) 21:25:26.80ID:iGYBTUav
誰とは言わんけどツイッターで永遠と古い記事繰り返し流してるボットいるよね
リンク切れてるし邪魔なだけなんだけどああいうの消し去りたい
0535デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:58:17.77ID:QG8+TwCh
https://zenn.dev/mattn/books/bb181f3f4731920f29a5/viewer/5

> 既にシェルスクリプトのみでやる領域を超えてきています。
> 本来ならば正しいプログラミング言語を選んで正しくフィルタリングすべきだと思います。

と書いてありますが、これを「正しいプログラミング言語」で書くとどうなりますか?
シェルスクリプトだけでやるより分かりやすくなりますか?
0536デフォルトの名無しさん
垢版 |
2020/10/01(木) 00:02:53.15ID:5ZG2Vz6Q
あげー
0537デフォルトの名無しさん
垢版 |
2020/10/01(木) 07:52:50.34ID:theiHz1p
>>535
Windows のRuby で、JSON ファイルをダウンロードして保存する、部分だけを作ったが、
85KB のファイルの中身には、日本語は無く、
ほとんど、\u6708 みたいなユニコード・コードポイントの表示ばかりで読めない。
{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}

ダウンロードする際の、オプションでも間違ったのかな?

download_file = "wikipedia.json"

# ファイルが存在しない時だけ、ダウンロードして保存する
unless FileTest.exist? download_file
require 'open-uri'
require 'cgi'
require 'date'

today = Date.today.strftime( "%-m月%-d日" ) # 今日の日付。1桁表示。例、10月1日
url = "https://ja.wikipedia.org/w/api.php?format=json&;action=query&prop=revisions&rvprop=content&exintro&explaintext&redirects=1&titles=" +
CGI.escape( today ) # URL encode

# ダウンロードしたファイルを保存する
open( url ) do |file|
open( download_file, "w" ) do |out|
out.write( file.read ) # 書き込み
end
end
end
0539537
垢版 |
2020/10/01(木) 08:27:48.51ID:theiHz1p
Ruby の方が、一般的な関数を使っているから、分かりやすい。
例えば、CGI.escape で、URL encode してる

元のサイトだと、date +%-m月%-d日
の部分を、何かでエンコードして、以下のようにして、
date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5

それを、titles の所に書いている。
titles=$(date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5)
0540デフォルトの名無しさん
垢版 |
2020/10/01(木) 23:43:56.76ID:GxyRQFaD
> Ruby の方が、一般的な関数を使っているから、分かりやすい。
その理屈だとシェルスクリプトにもそのような関数(コマンド)があればいいって話になるよね?
0541デフォルトの名無しさん
垢版 |
2020/10/02(金) 00:24:23.57ID:DKz3pZcY
シェルスクリプトの場合はJSONからデータ取るのにjqのミニ言語を覚えなきゃいけないというのはあるけど
Wikipediaのように構造化しにくいデータをテキストのまま加工するならそこまで大きな差はないよね

便利な関数が用意されてるかどうかやエラーハンドリングがやりやすいかどうかくらいの違い
Wikipediaのデータ用のパーサー使ってテキストじゃなく構造化したデータを扱えるなら差が出てくる
0542デフォルトの名無しさん
垢版 |
2020/10/02(金) 01:31:17.04ID:yAc5FveJ
jqのミニ言語 vs 言語のパーサー?とかだろうけど
結局、jqのミニ言語の方が小さくならね?

それでも言語のパーサー使うってことは
大きくなったら、さくっと複雑な正規表現一発よりもも
愚直に文字や単語を検索していって処理を書いたほうが
分かりやすいと言ってるのと同じようなことなんかな?
0543デフォルトの名無しさん
垢版 |
2020/10/02(金) 01:39:10.41ID:ChxT/cO/
答えを教えてくれという質問に答える必要があるのか?
0544デフォルトの名無しさん
垢版 |
2020/10/02(金) 01:40:52.28ID:ChxT/cO/
なんでRubyなのか。初心者ならどのプラットフォームでも動くPythonを勧めておけよ。
0546デフォルトの名無しさん
垢版 |
2020/10/02(金) 02:02:36.55ID:ChxT/cO/
シェルスクリプトの話ではないならな
0549デフォルトの名無しさん
垢版 |
2020/10/02(金) 03:39:17.87ID:b+gARvx0
macOSがzshに変わっても/bin/shはbashなんだしzshでコード書くやつなんておらんだろと
思っていたけどzshrcとかで書くことはあるんだな
0550デフォルトの名無しさん
垢版 |
2020/10/02(金) 04:11:27.42ID:3z5rsnx9
何言ってるのかと思ったら、zsh固有のを使ってことか
誰も好き好んでそうシェルはそう変えないけど、デフォがzshになったらそれなりに出てくるんじゃね
だいたいがデフォだからそのシェルを使ってるって理由にならない理由wだからな

>zshに変わっても/bin/shはbashなんだし
bashismに慣れているんだったら脱却した方がいいぞ。あくまでも過渡期(変えた直後)だからそうしてるだけで、そのうち無くなるぞ。絶対何かに変わる。dashとか(dashとは言ってない)
0552デフォルトの名無しさん
垢版 |
2020/10/02(金) 04:27:45.79ID:b+gARvx0
bashはなくならないが、インタラクティブシェル
/bin/shはdash、もしくはPOSIX準拠のシェルだろ

dashよりも速いシェルって作れる気がするんだよな
JITとか取り入れてさ
0553デフォルトの名無しさん
垢版 |
2020/10/02(金) 04:58:29.55ID:3z5rsnx9
メンテするのめんどくさくなって消してしまうのが定番だからなあ
必要なら自分で入れろになると思うよ。いつも通りならw
0554デフォルトの名無しさん
垢版 |
2020/10/02(金) 08:31:08.24ID:Ym6Y+dmB
dash dash dash
bash and dash
0555デフォルトの名無しさん
垢版 |
2020/10/02(金) 09:54:23.17ID:b+gARvx0
bashismは嫌いだから/bin/shはdashにしてbashをオプショナルにするか
POSIXで標準化して欲しい
0556デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:30:02.56ID:Kgg5xh5c
>>553
既存シェルスクリプトの動作検証よりはマシやろ。w
BashとかPerl5とかはすでにインフラみたいなもんだし。

まあ、Python2も消せないやろ、と思ってたら、意外と3のみになったもよう。
0557デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:40:10.03ID:kBx+3rAk
>>556
何を言っているのかイマイチわからん
現在の bash 3.2 ですら時代遅れだし、Apple自身でメンテしなくてはならない
macOS内でApple製のスクリプトがあるんだったらもちろん代替になるので問題なく書き換えられるだろう
今まで通りならmacOSバンドルとしてはインストールされなくなるのは当然のような帰結
0558デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:52:27.29ID:sGznlVtc
macOSの/bin/shのbash3.2はもう負債だよねw
これからAppleはどうするつもりなんだろ
zshは互換性ないし、dashにしたら機能低下だしw
0559デフォルトの名無しさん
垢版 |
2020/10/02(金) 16:49:14.59ID:Kgg5xh5c
>>557
あー、アポーの話だったか。。。
まあ、今までも互換を壊すときには平然とぶち壊してきたし、マジメに考えてもしょうがないのでは。w
0560デフォルトの名無しさん
垢版 |
2020/10/02(金) 18:28:44.86ID:bqQ3ZGOC
いつ無くなってもいいように今からしとこというマジメに考えたらの話だけど
マジメってどういう意味なのか知らんけど
0561デフォルトの名無しさん
垢版 |
2020/10/02(金) 21:23:42.67ID:VhuuBVU8
Appleは突然Swift出してきたりMetal出してきたりArm出してきたりであらゆる分野で考慮するだけ無駄というスタンス
0562デフォルトの名無しさん
垢版 |
2020/10/02(金) 22:46:19.69ID:Kgg5xh5c
>>561
そうそう。w
Bashをなくしたとして、POSIX互換シェルをわざわざ残すのかと。

そんな心配をするよりも、今使えるBashを謳歌したほうが合理的やろ。
0563デフォルトの名無しさん
垢版 |
2020/10/02(金) 22:58:56.81ID:r3ReT+S4
その今使えるbashっていうのがmacOSでは3.2なのよね・・・

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/migration_planning_guide/sect-migration_guide-package_changes-bash

Bash-4.0 およびそれ以降のバージョンは、 プロセス置換の構成をブレース展開を使って変更せずに渡すことができるようになるため、
内容の展開はすべて別々に指定し、 各プロセス置換を別々に入力しなければならなくなります。

Bash-4.0 およびそれ以降のバージョンでは Posix が指定するのと同様に、 SIGCHLD が wait の組込みに割り込みを許可するため、
全ての子を待機するよう「wait」を使用する場合、 子を終了したら SIGCHLD トラップは常に呼び出されることがなくなります。

Bash-4.0 およびそれ以降のバージョンは、 クローズ用の区切り文字 $() コマンド置換を検索する場合に
Posix のルールに従うようになり、 旧バージョンのような動作はしなくなりますが、
より多くの構文および解析のエラーを先に捕らえてからコマンド置換を評価するためのサブシェルを生成します。

Bash-4.0 およびそれ以降のバージョンでは、 パイプラインのコマンドのひとつがコマンド一覧を実行している間に
SIGINT によって終了させられた場合、 シェルは割り込みを受けたかのような動作をします。

Bash-4.0 およびそれ以降のバージョンでは、 set -e オプションの処理法が変更されるため、
パイプラインが失敗すると (失敗したパイプライン内の最後のコマンドが単純なコマンドでない場合も) シェルは終了します。
これは Posix が指定するものとは異なります。 この部分の基準を更新する作業が進展中です。
Bash-4.0 の動作はリリースの時点での合意を得ようとしている動作です。

Bash-4.0 およびそれ以降のバージョンでは、"." がシステムの PATH に存在しない場合でも、. (source) ビルトインが
ファイル名の引数を現在のディレクトリで検索してしまう原因となっていた Posix モードのバグが修正されています。
Posix では、このような場合シェルによる PWD 変数内の検索は行われるべきではないと述べられています。
0564デフォルトの名無しさん
垢版 |
2020/10/03(土) 02:30:20.61ID:GCdjvz0l
>Bashをなくしたとして、POSIX互換シェルをわざわざ残すのかと
何もわかってないのに口出す馬鹿
0565デフォルトの名無しさん
垢版 |
2020/10/03(土) 11:56:15.65ID:ylT9+9xh
シェル上で別の種類のシェルが動いたり、種類が異なるシェルが別のシェルの動作をエミュレートしていることを知らないんだろうね。
0567デフォルトの名無しさん
垢版 |
2020/10/03(土) 13:59:59.45ID:/+lXvOCZ
変わるも何も現状及びその対応の予測の理解が間違ってるってことなんだがw
0568デフォルトの名無しさん
垢版 |
2020/10/03(土) 14:04:51.63ID:F0et+WHN
POSIXという標準があるから変わるわけないんだよな
多く使われてるdebian/ubuntuがPOSIXに準拠を頑なに守ってる
/bin/shがdashが多いからPOSIX準拠で書くしかない
そうすればmacOSでも動く
0569デフォルトの名無しさん
垢版 |
2020/10/03(土) 14:12:51.48ID:/+lXvOCZ
1行目と2行目以降が繋がらない

bashのエミュレーションがちゃんとしてたら問題がなかったのにな
GNUはライセンスにうるさいwくせになぜあんなのなのだかな
0572デフォルトの名無しさん
垢版 |
2020/10/13(火) 23:49:10.96ID:fWSRS6M8
素人ですが世話になります
POSIXってシェルの最低限の共通規約って認識でいいんだろうか
機能を拡張しても所詮は方言だから封印しとけと
0575デフォルトの名無しさん
垢版 |
2020/10/14(水) 01:29:03.98ID:0TgtAVoq
>>572
POSIXに準拠しておけば、Debian、Ubuntuの/bin/sh(dash)や
Alpine Linux(busybox)やmacOS(古いbash 3系)やmacOSのユーザーシェル(zsh)
でもそのまま、もしくはわずかな修正で動くようになるというメリットが有る

世の中全部bashやろーとか言ってるやつは、Debianで実際にシェルが変わったときや
macOSのbashが古いなどで変化に耐えられず、最新のbashしかしらん
どうせbash使うもんって言いはる羽目になってる

bash依存してるやつは、なにか理由があってbash依存してるのではなく
無知ゆえに必要もないのに[[ ]]を使ったりfunctionキーワードを使ったり
独自のforの書き方をしたり配列を使ってたりするだけ

ちゃんと知っていればbashスクリプトの9割は簡単にPOSIX準拠で書ける
もしPOSIX shではなくbashを使いたくなったら、他の言語を使ったほうが良い
POSIX shの機能は本当に必要なものだけを実装している。それがUNIXの思想

素人はまずPOSIXの機能だけ勉強しとけ
最初にbashから入ると、これはPOSIXで使えるんだっけ?って悩む羽目になる
0577デフォルトの名無しさん
垢版 |
2020/10/14(水) 02:01:39.11ID:0TgtAVoq
そういや日本人が作った口先だけのPOSIXの原理主義みたいな変なのがありましたねw
3人ぐらいのグループでPOSIXにしろーしろーと叫ぶだけで何も生み出さない

それを使って自分たちは商売してるから
本人にとっては生み出してるんでしょうが

あれに洗脳された学生とかは可哀想です。
だってそのグループ界隈以外ではまったく使われてないものだから
0578デフォルトの名無しさん
垢版 |
2020/10/14(水) 02:14:34.88ID:rQGDkRcC
>>576
いやいや、ニオイどころか、まるだしやろ。w

現実の動作確認もろくにできない机上のPOSIXを夢想してもしかたない。
んなこと、いちいちやってられんからな。
0582デフォルトの名無しさん
垢版 |
2020/10/14(水) 09:13:33.96ID:e7axr172
>>581
POSIXの証明って何の話?
bash拡張機能はbashでしか使えない。POSIX shの範囲でならどのPOSIXシェルでも使える
実際にbash拡張機能はDebianの/bin/sh(dash)やAlpine Linuxの/bin/sh(busybox)では使えない
という当たり前の話しかしてないが

俺に何を証明して欲しいん?
動かない命令でも書いてほしいんか?
array=(1 2 3)
↑DebianやAlpine Linuxで動かない。ほらPOSIXの証明になったろw
0584デフォルトの名無しさん
垢版 |
2020/10/14(水) 09:25:02.38ID:e7axr172
>>583
shellcheck

こういうエラーが出る

$ shellcheck posix.sh

In posix.sh line 3:
array=(1 2 3)
^---^ SC2034: array appears unused. Verify use (or export if used externally).
^-----^ SC2039: In POSIX sh, arrays are undefined.

For more information:
https://www.shellcheck.net/wiki/SC2034 -- array appears unused. Verify use ...
https://www.shellcheck.net/wiki/SC2039 -- In POSIX sh, arrays are undefined.


> もしくはピュアPOSIXの実装とか
それがdash
0587デフォルトの名無しさん
垢版 |
2020/10/15(木) 07:43:17.35ID:VXXH9SNU
dashの目的は、それまで使われていた/bin/shの代替
高速で軽量でPOSIX互換を目指している

この目的と目標は実現され /bin/shの代替として
Debian系(Ubuntu含む)などで多く使われている
FreeBSDやNetBSDでもashが使われてる
dashはそのashをDebian用に移植したもの

bashはインタラクティブシェルとしては一番使われてるだろうが
shebangのは/bin/shが使われることが多いので
シェルスクリプトを動かす場合はdashが一番使われているシェルだろう
0588デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:07:06.34ID:r6YkuFXF
https://twitter.com/col_richie/status/1316543524569903111

リッチー大佐の中の人
@col_richie
「シェルスクリプトによる○○」と銘打ちながら、必要なものにPythonやGoが含まれるというなら、
それは「Pythonによる○○」あるいは「Goによる○○」に他ならな
なぜ「シェルスクリプトによる○○」と語ることにこだわるのか?
他言語に頼る時点で既にそんな資格はない。当たり前だろうが!!!



郵便番号から住所欄を満たすアレを、シェルスクリプトで実装
https://github.com/ShellShoccar-jpn/zip2addr
https://github.com/ShellShoccar-jpn/zip2addr/blob/master/commands/parsrj.sh

※ これはシェルスクリプトではなくawk(笑)

# #
# === Generate the JSONPath-value with referring the head of the ======= #
# strings and thier order #
awk ' #
BEGIN { #
# Load shell values which have option parameters #
alt_spc_in_key=ENVIRON["sk"]; #
root_symbol =ENVIRON["rt"]; #
key_delimit =ENVIRON["kd"]; #
list_prefix =ENVIRON["lp"]; #
list_suffix =ENVIRON["ls"]; #
# Initialize the data category stack #
datacat_stack[0]=""; #
delete datacat_stack[0] #
# Initialize the key name stack #
https://twitter.com/5chan_nel (5ch newer account)
0589デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:08:30.55ID:r6YkuFXF
さらしあげとこうw
0590デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:13:25.16ID:r6YkuFXF
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html

NAME
awk - pattern scanning and processing language
awk - パターン走査および処理言語

DESCRIPTION
The awk utility shall execute programs written in the awk programming language,
which is specialized for textual data manipulation.
awk ユーティリティは,テキストデータ操作に特化した awk プログラミング言語で書かれたプログラムを実行する.


_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
0592デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:22:25.09ID:r6YkuFXF
>>591
awk ユーティリティは,テキストデータ操作に特化した
awk プログラミング言語で書かれたプログラムを実行する.

_人人人人人人人人人人人_
> awk プログラミング言語 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
0593デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:25:32.93ID:r6YkuFXF
たっくん
シェルスクリプトでTwitterBotっていうのを見かけたけど、「コマンドの実装にGoを使う」って書いてあって「うーん?」となってしまった

リッチー大佐の中の人
まったくだ。なめてるのかと。我らの小鳥男こそシェルスクリプトによる最強のTwitterクライアントアプリだ。
もちろん、別途シェルスクリプトを組めばbotも好きなように作れる。 https://github.com/ShellShoccar-jpn/kotoriotoko

0594デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:26:22.84ID:r6YkuFXF
https://github.com/ShellShoccar-jpn/kotoriotoko/blob/master/UTL/base64

# Main

(cat ${1+"$@"}; echo '') |
awk ' #
BEGIN { #
# --- prepare #
OFS = ""; #
ORS = ""; #
# --- prepare encoding #
for(i= 0;i<256;i++){c2p[sprintf("%c",i)]=sprintf("%%%02X",i);} #
c2p[" "]="'"$instead_of_spc"'"; #
for(i=48;i< 58;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=65;i< 91;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
for(i=97;i<123;i++){c2p[sprintf("%c",i)]=sprintf("%c",i); } #
c2p["-"]="-"; c2p["."]="."; c2p["_"]="_"; c2p["~"]="~"; #
0595デフォルトの名無しさん
垢版 |
2020/10/15(木) 10:38:59.90ID:r6YkuFXF
POSIX準拠コマンドの中で言語と言えるもの
(セミコロンや改行区切りで "複数の命令" を手続き的に実行できるものを言語としています)

awk - pattern scanning and processing language
bc - arbitrary-precision arithmetic language
ed - edit text
sed - stream editor

他にもあるかな?
bcは複数の命令を実行できるから言語だけど
exprは式を評価するだけだから違う
0597デフォルトの名無しさん
垢版 |
2020/10/15(木) 22:29:33.58ID:BrsJS6s+
exでもできるん?

sedとか"s/a/b/"みたいに一行のコマンドを実行してるように見えるけど
実際には
s/a/b/
s/c/d/
みたいにsedスクリプトを実行できるわけだよね

sedは置換をベースとしたかなり独特な言語だけど
awkなんてBEGINで全部書いてしまえば
完全に普通のスクリプト言語になる

bcも実際はスクリプトを使って計算する
https://linux.die.net/man/1/bc の中間あたりにある例は
関数定義やif文while文も使っていて実は言語であることがわかると思う

まあ言いたいことは、シェルスクリプトからPythonやGoを呼び出していて
そこがメインで処理してるのがシェルスクリプトでないように
awkやsedでメインの処理を行ってるなら同様にそれもシェルスクリプトではない
0599デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:01:29.76ID:BrsJS6s+
>>598
そのとおりだよ
シェルスクリプトで階乗を行うコードを実装しましたと言っておきながら
C言語でコードを実装して、シェルスクリプトではそれを呼び出すだけなら
それはシェルスクリプトで実装したとは言えない

シェルスクリプトで実装というのなら、シェルスクリプトで
定義されているものだけを使って使って作らないといけない
例えば変数展開(を利用した文字列処理)や算術式展開を使った四則演算や
case文を使った文字列パターンマッチング処理で作る

外部コマンド呼び出しは(そのコマンドを自分で実装してないなら)
外部コマンドと組み合わせてシェルスクリプトで実装したと言えなくはないが
そもそもその外部コマンドがPythonやawkのような"別の言語"を使うものなら
そこから別の言語に切り替わっている
0600デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:02:18.89ID:5H3UlTi7
イチャモンつけるならmakeがチューリング完全って話にまで火花が散るので、適当な落しどころは
POSIXに規定されておらず、それ自身が汎用プログラミング言語であることを目的として実装されたインタプリタやランタイムに対して、目的の処理を委譲しているのをシェルスクリプトだと表現されると気に食わない人が居る
くらいでいいでしょ

イチャモンつけるのも程々にしとかなきゃただ相手の意図を汲み取るつもりのない人間でしかなくなるぞ
0601デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:03:31.46ID:BrsJS6s+
>>600
厳密な境目を見つけたいんじゃなくて

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。

と書いてあるんだから、awkは「awkプログラミング言語」
0602デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:09:18.27ID:BrsJS6s+
make は内部的にシェルを呼び出してるので
GNU拡張は無視するとして、makeの範囲だけでなにか作れるんですかね?

GNU拡張を含むなら沢山の関数があるので
それらを使って作ったものは当然シェルスクリプトで実装したことにはならないですよ
0603デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:12:13.35ID:BrsJS6s+
あとイチャモンの内容は、Pythonで作ったものはシェルスクリプトではないのはそのとおりだけど
同じ用にawkで実装したものもシェルスクリプトではないんだから
awkで実装ばかりしてるお前(リッチー大佐)は自分のことを棚に上げてるwwwって言ってるだけ
0604デフォルトの名無しさん
垢版 |
2020/10/15(木) 23:22:09.05ID:9L6aMfZP
♪しぇまるー、ショッカー
0606デフォルトの名無しさん
垢版 |
2020/10/16(金) 00:18:33.05ID:V+ycHLUt
>>605
そりゃそうよw
そのシェルスクリプトでメインの処理を行ってるんでしょ?
0607デフォルトの名無しさん
垢版 |
2020/10/16(金) 06:54:13.19ID:AxWc82uj
>>603
だーからそういう揚げ足取りがしょーもないって話してんのが分からんかね
awkがプログラミング言語であるのは否定しない
ただ発端の話者はPOSIX狂いで有名な上awk多用してるんだから、対象のツイート中で言うプログラミング言語がPOSIXを除くものについての言及と考えれば辻褄は合うし、そう考えるのも突飛な発想と言うほどおかしくはないでしょ
確かにその人は語り口が横柄な事があるし好かれる性格キャラ作りはしてないさ
でも個人憎しでしょーもない揚げ足取りしてんのは同等かそれ以上につまんねーことしてんなって感じだよ
0608デフォルトの名無しさん
垢版 |
2020/10/16(金) 07:32:49.12ID:8MUyS0MS
>>607
だから結論としては、awkはシェルスクリプトじゃないんだから
お前(しょっかー)もawk使ってるくせにシェルスクリプトって言ってるじゃん
ってことでしょ

それ以外になにか言うべきことあんの?
ないでしょ
それで話は終わりだよね
0609デフォルトの名無しさん
垢版 |
2020/10/16(金) 07:49:02.57ID:AxWc82uj
>>608
意図的に悪意を持って相手の意図を読もうとしてないんだと思ってたら本当にただ単に日本語読めないだけだったんだね…
なんか…ごめんね?
0610デフォルトの名無しさん
垢版 |
2020/10/16(金) 07:50:20.39ID:hscjZ2ao
>>609
なんで相手の意図とか読んであげようとしてんのw
相手をかばう必要なんかないじゃん

awkはシェルスクリプトではない
事実だけを言えばいい
0611デフォルトの名無しさん
垢版 |
2020/10/16(金) 08:10:20.93ID:AxWc82uj
>>610
意図を読む事を相手をかばうとか言ってる時点でコミュニケーションする気なし、端っから粗探ししてdisる気満々じゃん
そういうスタンスを俺は見てて気に食わないよ
それだけ
0612デフォルトの名無しさん
垢版 |
2020/10/16(金) 08:21:19.35ID:hscjZ2ao
>>611
意図じゃなくてお前の願望だろw

awkは明らかにシェルスクリプトじゃないし
POSIX準拠のコマンドだけを使って作ったというのなら、そう言えばいいだけで
そう言わない理由はあるわけがないので、単にそのことを理解してないってだけ
それをお前はかばおうとしてるだけだろ
0613デフォルトの名無しさん
垢版 |
2020/10/16(金) 08:47:26.97ID:AxWc82uj
>>612
>>607 に対しての時点でその返しが来てたら分からんでもないけど、そこでスルーしてんのに今更言ってんのが議論とか意見出しがしたいんじゃなくて粗探ししてますって自白してるようなもんでしょ

そう言わない理由があるわけないは言い過ぎだよ
人間誰しも無意識の前提を置いてしまうことはある
0614デフォルトの名無しさん
垢版 |
2020/10/16(金) 09:11:10.47ID:095UBA8m
恥ずかしいよねw

自分がシェルスクリプトといいながら、awkで書いちゃってるのに
他に人にはPythonはシェルスクリプトじゃないと言っちゃってるわけだw
0616デフォルトの名無しさん
垢版 |
2020/10/16(金) 10:52:10.99ID:rggqlWcj
>>614
awkやsedはシェルスクリプトの一部とみなす慣例は大昔からだから。
0617デフォルトの名無しさん
垢版 |
2020/10/16(金) 13:05:08.68ID:Sbv90d+P
シェルスクリプトに混ぜて書く場面が多ければほぼシェルスクリプトのようなものと思ったって何の問題もない
0618デフォルトの名無しさん
垢版 |
2020/10/16(金) 13:14:33.80ID:s+qbwWMb
それはお前の願望ですよね?

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
The awk utility shall execute programs written in the awk programming language,
awkユーティリティは、awkプログラミング言語で記述されたプログラムを実行します。
0619デフォルトの名無しさん
垢版 |
2020/10/16(金) 14:28:05.49ID:rggqlWcj
>>618
そうだよ。UNIXでもそう説明される。ただし、実態は単独では使われない。
0620デフォルトの名無しさん
垢版 |
2020/10/16(金) 15:42:36.85ID:gWa/7c+R
awkをシェルスクリプトと組み合わせて使っても
awk言語がシェルスクリプトに変わるわけがないって話ですよね?
いつから単独で使われるかどうかの話にすり替わったんですか?
0621デフォルトの名無しさん
垢版 |
2020/10/16(金) 16:33:59.64ID:rggqlWcj
シェルスクリプトがシェルのスクリプトだとわかってない?
0622デフォルトの名無しさん
垢版 |
2020/10/16(金) 16:36:29.14ID:j/dNEpw/
シェルのスクリプトから呼び出す
外部コマンド(awkやpython)が
シェルではないことぐらい知ってるよね
■ このスレッドは過去ログ倉庫に格納されています

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