2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :名無しさん@お腹いっぱい。:2018/08/02(木) 05:22:16.82 .net
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
 (左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
  http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
シェルスクリプト総合 その27
https://mevius.5ch.net/test/read.cgi/unix/1525337663/

232 :名無しさん@お腹いっぱい。:2020/04/14(火) 07:50:06 .net
>>231
知り合いの人は大学をやめて会社を起こして金持ちになったよ。
お前が何をいいたいのか知らんが

233 :名無しさん@お腹いっぱい。:2020/04/14(火) 07:52:02 .net
>>230
さんくすとお礼を言った上に、条件をつけ忘れてたから
補足しただけでしょ

たったそれだけで、はぁ?理解できない。謎だわ。なんでそんな事するの?バカなの?
みたいに言うのはなんで?

234 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:10:41 .net
>>232
知り合いは宝くじ当たったよ

中卒、高卒、大卒の平均年収見てみ

235 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:12:21 .net
問題を解決できないやつは
学歴がなんでも大成しないな

236 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:16:49 .net
2chは口が悪いやつが多いけど
ここ見てると分かるように無償で相手してくれるやつがいるんだな
現実はどうだろう

そんなことないよ

社会に出れば分かるがフリーライダーは受け入れられない
街角でスケッチブックに助けてくださいって掲げるのか?
そんなの通報されて終わるよ
SNSなら答えてくれるって?
フォロワーも居ない人の相手なんて誰もしない
要するに2chしか質問する先がないんだ

237 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:18:35 .net
>>233
何で逆切れするの?
仕事は自分でしましょう

238 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:24:13 .net
>>233
>>229があなたの書き込みなら
あなたが煽っただけでしょう
そして>>229があなたではないなら
なぜそんな反応するのか分からない

239 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:26:10 .net
課題か仕事か知らんが問題を片付けてくれたのになぜ素直になれないんだろうか
仕事だったら出来上がらないから検収されずに報酬もらえないぞ

240 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:29:48.56 .net
JavaHouseってのがあって明らかに仕事に関係するであろう質問してた輩に
運営者の人がそれ幾らなのって聞いてたな
聞いた本人は無料ですってなんか意味の分からんこと言ってたが

241 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:31:37.22 .net
>>234
宝くじワロタ

242 :名無しさん@お腹いっぱい。:2020/04/14(火) 08:44:03.74 .net
>>232
それは単にその人が優秀だっただけ

243 :名無しさん@お腹いっぱい。:2020/04/14(火) 09:06:13 .net
課題をこなせず大学をやめて成功したって丸投げ派遣会社でも設立したんか

244 :名無しさん@お腹いっぱい。:2020/04/14(火) 10:27:17.89 .net
>>242
人の話がシェルスクリプトと何の関係があるのという話だ
人の話をし始めたやつにいえな

245 :名無しさん@お腹いっぱい。:2020/04/14(火) 11:48:50.47 .net
宿題は自分でやりましょうってことだけじゃ

246 :名無しさん@お腹いっぱい。:2020/04/14(火) 12:53:01 .net
>>245
全ての質問に対してそういう回答をしてるなら何も言わんよ

247 :名無しさん@お腹いっぱい。:2020/04/14(火) 16:26:20 .net
>>232
まあ今どきの日本人はだいたいビル・ゲイツは知り合いだからなw

248 :名無しさん@お腹いっぱい。:2020/04/14(火) 16:29:02 .net
>>246
でたでたw
なぞの平等理論w
あいつだけずるいとかいう妬みで周りが見えなくなってるんだろうなあ

249 :名無しさん@お腹いっぱい。:2020/04/14(火) 16:51:38 .net
自分なら質問者が
「今こうやってるけどもっと効率のいい方法ない?」
とか聞いてきたら答えてあげたくなる

一度答えてそーじゃねーよとか言われたら・・・w

250 :名無しさん@お腹いっぱい。:2020/04/14(火) 17:19:48.25 .net
一度答えてそーじゃねーよと言われたら?
↓これみて「そーじゃねーよ」言われたと思っちゃったの?

215 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/11(土) 11:20:47.30
...... | sed -n '/_TAG("S.T.A.R.T")/,/_TAG("E.N.D")/p' | wc -l
こんな感じ

216 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/12(日) 07:36:15.54
さんくす
sedやwcなどの外部コマンド?を使わない方法はありますか?

251 :名無しさん@お腹いっぱい。:2020/04/14(火) 17:20:54.13 .net
沸点が低いんだろうなぁ。
少しでもなにか言われたら、親を侮辱されたかのように感じるんだろうな

252 :名無しさん@お腹いっぱい。:2020/04/14(火) 17:27:27.07 .net
なんとなく答える前に
sedやwcなどの外部コマンド?を使わない方法はありますか?
と書いても、同じようにキレていそうな気がするなw

253 :名無しさん@お腹いっぱい。:2020/04/14(火) 17:38:50 .net
3連投かよw
そんなに悔しかったのかよw

254 :名無しさん@お腹いっぱい。:2020/04/14(火) 18:07:42.02 .net
レスしただけでこの反応w 矛先をずらしているのもありがちだなぁw

255 :名無しさん@お腹いっぱい。:2020/04/14(火) 23:33:18.21 .net
>>222-223
その _TAG("S.T.A.R.T") とかも字下げされてます
echo ' _TAG("S.T.A.R.T")' なんかも考慮する必要はありません
_TAG("S.T.A.R.T") は複数ありません
ネストもありません

>>224
可能ならman bashで出る内容だけで解決したいです。

_TAG("S.T.A.R.T")や_TAG("E.N.D")の前後にも行はあるので、わかりやすく
_TAG("S.T.A.R.T")なんとか
  count=$((count + 1))
_TAG("E.N.D")かんとか
ならベストなのですが。

256 :名無しさん@お腹いっぱい。:2020/04/15(水) 00:16:02.16 .net
>>255
while文で1行ずつ読んでSTART見つけたところからカウントしていってENDが見つかったら終了すりゃいいだけじゃないの
自分でどこまで作ったの?

257 :名無しさん@お腹いっぱい。:2020/04/15(水) 00:37:48.24 .net
>>256
もういいから早くスクリプト作れって言ってんだよ

258 :名無しさん@お腹いっぱい。:2020/04/15(水) 00:47:14.66 .net
>>257
なら今からman bash読むわ
ちょっと量が多いから1週間待ってな
忘れるといかんからまたその頃に催促してくれ

259 :名無しさん@お腹いっぱい。:2020/04/15(水) 08:44:47.78 .net
>>257
おまえ志賀だろ
あわしろさんに謝れ

260 :名無しさん@お腹いっぱい。:2020/04/16(木) 00:36:27 .net
>>255の後半からはawkのセンスありと見た

261 :名無しさん@お腹いっぱい。:2020/04/16(木) 07:29:49 .net
自分で man 読んで自分で出来るようになる方が自分にとって有益だと思うんだが…

262 :名無しさん@お腹いっぱい。:2020/04/16(木) 12:09:07 .net
awkでやればできるよ!・・・全部BEGIN
これ萎えるw

263 :名無しさん@お腹いっぱい。:2020/04/17(金) 09:28:05 .net
フレッシュなニンニクジュースを飲めばコロナの菌が死滅する

264 :名無しさん@お腹いっぱい。:2020/04/19(日) 04:34:10.20 .net
この板の住民なら生ニンニクで腸内細菌死滅して病院送りになるのは知ってそう

265 :名無しさん@お腹いっぱい。:2020/04/19(日) 04:48:20.74 .net
言うほどUNIXやシェルスクリプトってコロナ菌に関係あるか?

266 :名無しさん@お腹いっぱい。:2020/04/19(日) 13:15:29 .net
[ と [[ の違いなんかも理解できてないままflgやcontinueを使って書いてみました。
_TAG("S.T.A.R.T")の後でもループの度にflgをチェックするのが無駄なので
_TAG("S.T.A.R.T")を探すループと_TAG("E.N.D")まで行数を数えるループを完全に分けてflgを無くしスッキリ出来たらいいのですが。
declare -i i=0
declare -i flg=0
for f in `cat $INPUT_FILE`
do
if [ $flg == 0 ]; then
if [[ "$f" =~ \t*'_TAG("S.T.A.R.T")' ]]; then
flg=1
else
continue
fi
else
if [[ "$f" =~ \t*'_TAG("E.N.D")' ]]; then
echo 行数は $i
exit 0
else
i=$i+1
fi
fi
done

267 :名無しさん@お腹いっぱい。:2020/04/19(日) 22:46:59.99 .net
>>266
> ループを完全に分けてflgを無くしスッキリ出来たらいいのですが。

まず for f in `cat $INPUT_FILE`を使うのはやめよう
シェルスクリプトでテキストファイルを読むならwhile + read を使う
そしてread は read してから read すると次の行を read する(当たり前だw)

268 :名無しさん@お腹いっぱい。:2020/04/26(日) 02:43:28.05 .net
一応それらしいのを書いてみました。
exitがあるのと、whileループの前と中にreadがあるのがちょっと不満です。
後チェックができるように do; read; while という使い方ができればいいのですが。

declare -i i=0
while : ; do
read f <- 不要かも

while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
read f
done

read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i
exit
done < $INPUT_FILE

269 :名無しさん@お腹いっぱい。:2020/04/26(日) 07:48:46 .net
そもそも done < $INPUT_FILE とか書く必要ない

script.sh < $INPUT_FILE とやればいいんだよ
その方が柔軟性が高くなる

そうすりゃスクリプトは中身だけで良くなる。endはいらない。
そして while read do にも置き換えられるやろ?

read f <- 不要かも

while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
 read f
done

read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i

270 :名無しさん@お腹いっぱい。:2020/04/26(日) 07:49:15 .net
× endはいらない。
○ exitはいらない。

271 :名無しさん@お腹いっぱい。:2020/04/26(日) 13:23:56.84 .net
後出しっぽくてすみません。
$INPUT_FILE は_TAG("S.T.A.R.T")や_TAG("E.N.D")と同じく固定名なので汎用性は不要なんです。
それにこの部分はscriptの一部で本体には引数があるため毎回script.sh 引数 < $INPUT_FILE とやるのはちょっと...
といって、このためだけに分割するのも...

272 :名無しさん@お腹いっぱい。:2020/04/26(日) 16:11:10.53 .net
じゃあ
{
なかみ
} < "$INPUT_FILE"
とかすればいい

273 :名無しさん@お腹いっぱい。:2020/10/27(火) 23:15:06.07 ID:oDaI72SOc
サイボウズ式:会社員でもフリーでもない、その中間ぐらいの生き方を模索しているところです
https://www.huffingtonpost.jp/cybozu/careerpass_b_17142954.html?utm_hp_ref=jp-furiransu
「社員全員が副業」を体現し普及するスタートアップ、売上前年比4倍が物語る今後
https://newswitch.jp/p/23029
サイボウズの「副業したい人、採用します」戦略。正社員募集では見つからない“異能”の採り方
https://logmi.jp/business/articles/320834
10月より週休4日制度に移行します。
https://note.mu/soutaros/n/na788df21965b
「週休4日」や「1日5時間勤務」も可能に。アクセンチュアが、新たな勤務制度を取り入れた理由
https://www.huffingtonpost.jp/enhyouban/accenture_b_12796206.html
フリーランスは増加した。でも「奴隷的」会社員の延長では社会は不自由なままだ。
https://www.huffingtonpost.jp/entry/freelance-basics_jp_5c988943e4b057f7330cb53a?utm_hp_ref=jp-hatarakikata
秩父・横瀬町にWeb業界のクリエイターが集結! 地域がひとつになったクリエイティブソン
https://careerhack.en-japan.com/report/detail/813
自称「日本一の駅の待合所」はいったいドコがスゴいのか
https://headlines.yahoo.co.jp/hl?a=20190425-00010004-moneyplus-bus_all
書店内の本が読み放題!新しいオフィス形態「BOOK&OFFICE 文悠」
https://headlines.yahoo.co.jp/article?a=20190424-00001676-shogyokai-bus_all
会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと
https://www.businessinsider.jp/post-165731
フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か
https://toyokeizai.net/articles/-/263055

274 :名無しさん@お腹いっぱい。:2020/12/09(水) 09:14:48.51 .net
https://i.imgur.com/7y5aA6m.jpg

275 :名無しさん@お腹いっぱい。:2021/03/01(月) 22:58:36.48 .net
$ eval "<"
bash: 予期しないトークン `newline' 周辺に構文エラーがあります

これってどういうこと?

276 :名無しさん@お腹いっぱい。:2021/03/02(火) 03:17:30.34 .net
予期しないトークン が出てきたんだろ

277 :名無しさん@お腹いっぱい。:2021/03/02(火) 09:29:15.67 .net
そりゃ < をbashに渡すから
$ <
と同じ結果になる訳で

278 :名無しさん@お腹いっぱい。:2021/03/02(火) 11:20:08.32 .net
おふたりありがとう
たしかに
$ <
と同じ結果になった
でもnewlineというのはどこにも記述してないのにどうして `newline' なんだろう?と

279 :名無しさん@お腹いっぱい。:2021/03/02(火) 11:55:19.88 .net
英語の勉強をしましょう

280 :名無しさん@お腹いっぱい。:2021/03/02(火) 12:14:10.37 .net
>>278
パーサーが入力の「末尾」も改行文字と同じに扱っている
または入力末尾に改行文字を追加してからパースしている
といったところじゃないかな

281 :名無しさん@お腹いっぱい。:2021/03/02(火) 12:48:18.17 .net
あー、そういうことか、なるほどわかりました
日本語の中に突然newlineが出てきて、しかもわざわざクォートされてるからてっきり予約語かと思い込んでいた
というか目に見えない予約語なんだろうけど
ありがとうございます

282 :名無しさん@お腹いっぱい。:2021/03/02(火) 16:21:26.89 .net
わかっとらんやんけ!

283 :名無しさん@お腹いっぱい。:2021/03/14(日) 10:53:57.86 .net
>>165
win鯖管か個人用途のみで使うなら7系はいいものだと思うけど、数百MB食うpwshがunix界隈で受け入れられるとはとても思えない
まあ新興非b系シェルは駆逐されるかもしれんが
そもそもまだMacとlinux主要ディストロにしか公式対応してないので

IT職でなく、単にツールキットを享受できればいい人ならpwshでいいと思うよ
たとえ趣味や仕事でも(だけど時代遅れな)b系シェルの技能は汎用性あるから、あえて普段から使うのも勉強になるよ

284 :名無しさん@お腹いっぱい。:2021/03/14(日) 10:59:38.87 .net
あと怒涛の互換性ブチ壊しバージョンアップ中だから、せっかく書いても一年で動かなくなる
まだソフトウェア開発には使えないのが現状

285 :名無しさん@お腹いっぱい。:2021/03/14(日) 17:45:37.35 .net
シェルスクリプトの特徴は「人間がそのまま読むことが出来る1行1データのテキストを扱う」という点なんだわ
シェルスクリプトは分かりづらいからPerlやPythonを使うとか言ってるやつがいるけど
1行1データのテキストを扱うならば、シェルスクリプトが一番うまく処理できる
正確に言えば、シェルスクリプトだけじゃなくてUNIX系のCLIコマンドがそれを前提としたインターフェースになってる
CLIコマンド=シェルスクリプトのAPIなんだよ

pwshがunix界隈で受け入れられないのは、APIが全く違っていて互換性がないから
API=CLIコマンドなので、プログラマの多くはAPIコマンドを知ってる

シェルスクリプトがいつまでたってもPerlやPythonに置き換わらないのも
それらの言語はCLIコマンドというAPIを使わないから
CLIコマンドを使うならば、シェルスクリプトより簡潔に書ける言語が存在しない

286 :名無しさん@お腹いっぱい。:2021/03/31(水) 10:37:33.90 .net
シェルなんだから外部コマンドは呼べるし、テキストも扱えるしそんなに変わらんのでは
そんなに変らんということはすなわち、わざわざunix環境で使うモチベとしては弱いと思うが
ドザーが流行りのwsl使うのには便利なんじゃね

287 :名無しさん@お腹いっぱい。:2021/03/31(水) 10:41:33.46 .net
昔ながらのwinコマンドは大体外部コマンドだけど、pwshはほとんど組み込みコマンドなのがなあ
slsとか分けて提供してくれればbetter grep/findとして個人的には使いたいんだが

288 :名無しさん@お腹いっぱい。:2021/03/31(水) 22:49:44.43 .net
>>286
Windowsのコマンドはスクリプトから使うことを考慮されてない物が多い
例えば、copyコマンドは、copyすると
1 個のファイルをコピーしました。
とか人間のためのメッセージが出てくるからテキスト処理に向かない

バッチファイルは人間が操作するのと同じことただやるだけ
(出力を加工しない)なのでバッチファイルから使う分にはそれでもいいが
シェルスクリプトのように出力と入力をつないで処理することには向いていない

だからpwshはWindowsのコマンドを呼び出さない
一方pwshで使うAPIは1行1データのテキストにはなってないし
普段使ってる外部コマンドではない
どちらかと言えばPythonなどの関数に近い

Unix/Linuxの外部コマンド・・・1行1データのAPIインターフェースでCLIからも参照する
pwsh、Python、多くの言語・・・引数と戻り値のAPIインターフェースで言語内から参照しない

APIのインターフェースが大きく違っていて
Unix/Linuxの外部コマンドは改行の扱いが難しいなどの制限があるが
その制限の範囲内ではスクリプトからも人間からも使いやすくて
他の言語には置き換えることが出来ないんだよ

289 :名無しさん@お腹いっぱい。:2021/04/01(木) 00:40:09.95 .net
Windowsでシェルスクリプト動かそうとすると、パスの\のエスケープで気が狂いそうになるから
その辺捨てたパワーシェルの割り切りは、それはそれで理解できるけどなー

290 :名無しさん@お腹いっぱい。:2021/04/01(木) 01:14:08.37 .net
>>289
Windowsでシェルスクリプトって何を使ってるの?
パスの\のエスケープなんかしたことないよ

pwshはスクリプト言語としては悪くないと思うよ
ただPythonなんかと同じようなプログラミング用の言語ということ

Pythonにも当てはまるけどプログラミング用の言語は
シェルスクリプトとはスタイルが異なる。
シェルスクリプトは端末操作に特化した言語だから
プログラミングはしにくいが端末操作は得意

まあPowerShellでも普段からコマンドレット使って端末操作してます。
pwshでもコマンドレットをメインで使いますって人なら
シェルスクリプトと同じような感じに見えるかもしれないけど
そんな人いるのかな?

291 :名無しさん@お腹いっぱい。:2021/04/01(木) 03:02:34.14 .net
>>290
Windowsはダブルクォートの直前にバックスラッシュがある場合のみエスケープとして扱うということに一応なってる。
しかし実はWindowsではダブルクォートも引数の区切りも解釈するのはアプリケーションの仕事なので実は上記のように解釈される保証はない。

292 :名無しさん@お腹いっぱい。:2021/04/01(木) 06:04:39.51 .net
>>291
アプリケーションの仕事って言うなら、
パワーシェルから呼び出したときも同じじゃん・・・

293 :名無しさん@お腹いっぱい。:2021/04/14(水) 16:39:38.83 .net
int main( int argc,char **argv){ printf("%s\n",argv[1]); return 0;}
みたいなプログラムを書いて
a.exe "abc xyz"
みたいに実行しても処理系によって出力が
"abc xyz"
だったり
abc xyz
だったり
"abc
だったり…そんな時代もあったね。

294 :名無しさん@お腹いっぱい。:2021/04/17(土) 04:15:34.67 ID:1C2XvsMVm
第一生命HD、副業解禁 約1万5000人対象
https://www.nikkei.com/article/DGXZQODF226QU0S1A120C2000000/
第一生命HD、副業解禁 1万5000人対象―大手生保初
https://www.jiji.com/jc/article?k=2021020301353&g=eco
IHI、国内8000人の副業解禁 重厚長大企業も転機
https://www.nikkei.com/article/DGXZQODZ171SS0X10C21A1000000
IHI、社外兼業を解禁 社内副業もルール化
https://www.jiji.com/jc/article?k=2021012100772&g=eco
50代に時給5000円の求人も。都会の会社員、“地方企業でリモート副業”が人気
https://nikkan-spa.jp/1711157
「週休3日制」導入は拡大するのか? 働き方が多様化する社会で生き抜く力
https://news.yahoo.co.jp/articles/2887cf226cf6f608ff511ee9e349fd6518d4311f
スカイマーク、週休3日制へ 来春にも事務職対象
https://www.chunichi.co.jp/article/176961
週休3日制で何が変わる?休みが増えるメリット・デメリット
https://career.joi.media/tips/2020/11/06/24138/
週休3日制に賛成?反対? 東芝の模索
https://www.nhk.or.jp/ohayou/biz/20200701/index.html

295 :名無しさん@お腹いっぱい。:2021/04/20(火) 16:39:52.31 .net
SSDがいっぱいになってきたのでfindで各binを周りfileが吐いたリストをunstripped(だったか?)でgrep&stripするスクリプト書いた
半分くらいになるのなこれ…
今の所不具合は出てないからヨシ
おすすめ

296 :名無しさん@お腹いっぱい。:2021/04/20(火) 16:48:14.77 .net
>>290
ubuntuだけどbashからpwsh -cで便利なツールとして使うのがベスト
多少最適化されてそうなapt提供のプレコンパイル版でも60MiBあるから配布時依存に加えるのは厳しいのが悩み
私的ハックにはすごく重宝

297 :名無しさん@お腹いっぱい。:2021/04/20(火) 16:53:51.68 .net
>>289
`をエスケープに選んだのは英断だと思う
m4と協調させようと思うと壊れるけど、まあm4のクオートは簡単に変えれるし満足

298 :名無しさん@お腹いっぱい。:2021/04/20(火) 16:55:18.39 .net
>>295
golang製のバイナリってstripすると壊れるんじゃなかったっけ

299 :名無しさん@お腹いっぱい。:2021/04/20(火) 17:07:12.66 .net
>>298
マジかー!でも何がgoとか把握してない…
内蔵HDDの方はテラ余裕なのでそっくりコピーしてある、万が一あってもそっちからブート&コマンド全て使えるから問題起きてからでもいいかな…

300 :名無しさん@お腹いっぱい。:2021/04/20(火) 18:04:12.33 .net
学習コスト高そうだから何でも賢くキャストしてくれるキャスト器として使ってるわ
[xml]'<foo>...'くらいのカジュアルユース
年だからjqとか付いてけないしjsonもキャストして.付けてるタブ補完連打でアクセス
ただの型コレクションとして気兼ねなく使えばいい

301 :名無しさん@お腹いっぱい。:2021/04/21(水) 20:07:40.11 .net
>>300
歳のせいにするな。お前の能力の問題だ。

302 :名無しさん@お腹いっぱい。:2021/04/21(水) 22:14:14.03 .net
噂のpwsh試してみたけど、とりあえずコマンドライン作業中の電卓代わりにはpythonよりはいいな
子シェルだからパス通ってて、普通に演算子と数学関数が下拵え無しで使えるってだけだけど
64KBと打つと65536を返してくるのは遊び心かな?

まあスレ違いだねごめん

303 :名無しさん@お腹いっぱい。:2021/04/21(水) 22:37:37.09 .net
電卓代わりでbc/dc思い出して遊ぼうと思ったら今時のlinuxにはdcはいってないのね
頭の体操にいいのに残念

304 :名無しさん@お腹いっぱい。:2021/04/22(木) 09:18:28.19 .net
普通パッケージぐらいは用意されていて入れれば入るんじゃない?
deb系なら apt-get install dc で使える

305 :名無しさん@お腹いっぱい。:2021/04/22(木) 18:02:08.57 .net
LLのREPL使えばええやん

306 :名無しさん@お腹いっぱい。:2021/04/25(日) 11:29:37.47 .net
for i in "予定1" "予定2" "予定3"
do
[ $i = "予定1" ] && echo "予定1"; sleep 3
[ $i = "予定2" ] && echo "予定2"; sleep 3
[ $i = "予定3" ] && echo "予定3"; sleep 3
done

307 :名無しさん@お腹いっぱい。:2021/05/01(土) 09:40:38.84 .net
今日のIDすごいwww

308 :名無しさん@お腹いっぱい。:2021/05/02(日) 22:37:50.92 .net
しらんがなー

309 :名無しさん@お腹いっぱい。:2021/05/03(月) 22:39:37.02 .net
シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか?

310 :名無しさん@お腹いっぱい。:2021/05/04(火) 00:29:14.02 .net
>>309
そもそもCGIはすでに廃れてるって知ってる?

311 :名無しさん@お腹いっぱい。:2021/05/04(火) 00:30:10.82 .net
今どき本格的なサーバー側アプリをCGIで作るなんてないわけで
まあ簡単なツールぐらいならやるかもしれんけどさ

312 :名無しさん@お腹いっぱい。:2021/05/04(火) 01:58:13.24 .net
>>311
知らんのだがCGI以外でどう処理してるの?ジャバスクリプト?

313 :名無しさん@お腹いっぱい。:2021/05/04(火) 07:10:50.01 .net
>>312
WebアプリケーションフレームワークがWebサーバ機能を持っていて、フロントエンドのWebサーバからリバースプロキシして使うのが多いかな。
だからWebサーバとアプリケーションの接続インターフェイスと言う感じじゃ無いんよ。

314 :名無しさん@お腹いっぱい。:2021/05/04(火) 17:00:00.58 .net
えっ、そうなの?
perlじゃ無くCGIがオワコンで、マトモwebサービス作成にはもう使われ無いのね。

315 :名無しさん@お腹いっぱい。:2021/05/06(木) 02:07:50.66 .net
perl自体がオワコンかどうかの話は別として歴史の話をすると

初期はウェブサーバー+perlスクリプト、つまりCGIでウェブシステムが作られていた
もう2000年とかその頃の話よ。とほほのなんとかとかKentなんとかとかが幅を利かせていた
当時のプロ(ホームページ制作会社)でもそういったCGIを使っていた時代

その後はPHPが登場したが、これはウェブサーバーにPHPをモジュールとして組み込む
mod_phpが利用されていた。アクセスのたびにperlスクリプトを呼び出さないから速い
同じようにmod_perlというのもあった。
この頃のプロといえば自社でサーバーを保守管理するウェブサービス会社だったかな

その後から現在はアプリ自身でウェブサーバーとして起動するようになった
RailsとかPythonとかはそれが主。もちろんphpでもperlでもこの仕組が使える
クラウドの時代のプロのシステムはほぼこれ。もちろん今もホームページ制作会社はあるけど
ウェブサービス作ってる会社ってもうこんな感じじゃないでしょ?

アプリにウェブサーバーが内蔵されてると言っても、それはアプリに最適化されていて
静的コンテンツを配信するのには適していないから
>>313のいうように前段に普通のウェブサーバー(nginxやapache)を配置して
アプリ用のURLだけリバースプロキシでWebフレームワークにわたす仕組み

シェルスクリプトは、ブラウザにモジュールとして組み込んだり
シェルスクリプト自身をウェブサーバーにすることはできないからCGIオンリーで使うしか無い
と思ったらmod_bashなんてあるのなw

まあアクセス数が少ない個人用のシステムとか、特定のサーバーからアクセスしない
死活監視用のエンドポイント程度になら使っても良いんじゃね?

316 :名無しさん@お腹いっぱい。:2021/05/06(木) 11:37:17.18 .net
ネタかなんかなの?このくだり

317 :名無しさん@お腹いっぱい。:2021/05/07(金) 04:02:34.96 .net
いや、マジレスだろ。

318 :名無しさん@お腹いっぱい。:2021/05/07(金) 09:52:15.00 .net
時系列はおかしいけども、仕組みとしては大体合ってるし、いいんじゃない?

319 :名無しさん@お腹いっぱい。:2021/05/08(土) 11:58:10.94 .net
間違ってると言うやつほど
どこが間違っているかを言わない

320 :名無しさん@お腹いっぱい。:2021/05/08(土) 19:01:34.99 .net
しかしこれは CGI が使われなくなったと言われれば違和感はある Web サーバーがリバースプロキシに変化してアプリが Web サーバーを持ったに過ぎないのだろう

CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな

321 :名無しさん@お腹いっぱい。:2021/05/09(日) 02:29:54.79 .net
>>320
アプリケーションにHTTPヘッダを環境変数で渡す方法などを定めたものがCGI、だからInterfaceなの。
この方法で渡していないならそれはCGIではない。

322 :名無しさん@お腹いっぱい。:2021/05/09(日) 08:40:11.68 .net
もともとリバースプロキシの機能はウェブサーバーにあったのだから
どちらかと言えばウェブサーバーをリバースプロキシだけに使うように
使い方が変化してって言う方が適切だね

ちなみに開発時だとウェブサーバーはあまり使わない
ウェブサーバーとしての機能や性能は必要ないので
アプリ内臓の簡易ウェブサーバー機能で十分だから

323 :名無しさん@お腹いっぱい。:2021/05/09(日) 08:52:57.10 .net
>>320
> CGI とは Web サーバーから実行ファイルを走らせる技術だよね違うのかな
一番の違いはアプリが常駐しているかどうか

CGIはアプリが常駐して無くてアクセスのたびにコマンドを実行する
このコマンドを実行するっていうのはかなり重い処理なのでパフォーマンスが出ない

特にシェルスクリプトなんか外部のコマンドを組み合わせて処理するものだから
1アクセスでシェルスクリプト本体の実行の他に
sedコマンド+grepコマンド+awkコマンド+jqコマンド・・・みたいになるから
Perlで作るよりも確実にパフォーマンスが悪くなる。Perlよりも悪い選択
それに対してCGIじゃない仕組みはサーバーマシン起動時に1回コマンドを起動するだけ

もし誰かに、これからのCGIはシェルスクリプト!シェルスクリプトでもこれだけの速度が出る!って
郵便番号から住所を検索するデモをみせてシェルスクリプトでシステム開発させようと洗脳する組織団体にそそのかされていたら
それアクセスが多い時にパフォーマンス出ますか?他の言語とベンチマークして比較していいですか?って聞いたら良いよ
郵便番号のデータなんてたかだか十数MBしかないしSSD使ってりゃ0.01秒未満で読み込めるのは当たり前
そんな低負荷なデモを数回見せた程度でパフォーマンスの検証なんてできやしない

324 :名無しさん@お腹いっぱい。:2021/05/09(日) 11:14:52.20 .net
>>323
fastcgiってcgiと呼んじゃダメなん?

325 :名無しさん@お腹いっぱい。:2021/05/09(日) 11:52:38.01 .net
>>324
FastCGIはCGIの環境変数や標準入出力の内容をカプセル化してsocketで通信するように定められているから無関係ではないんだけど、
環境変数とか標準入出力を使っているわけじゃないからやはりCGIでは無いと思うよ。

326 :名無しさん@お腹いっぱい。:2021/05/09(日) 14:19:11.63 .net
そういやFastCGIなんて技術もあったな
あれも「プロセス起動が遅い」という問題を
プロセス終了をさせずにプロセスを使い回すことで
解決する技術なんだよな

シェルスクリプトでそれがやれるかっつーと無理だろうな
いやwikiによればhttps://ja.wikipedia.org/wiki/FastCGI
名前付きパイプもサポートしてるようだからから不可能じゃないのか?

でもまあシェルスクリプトから呼び出すコマンドは
どちらにしろプロセス起動になるわけで
シェルスクリプトで全部実装するならまだしも
普通のシェルスクリプトではあまり効果がないだろうな

327 :名無しさん@お腹いっぱい。:2021/05/09(日) 14:26:02.10 .net
英語だし読む気はないけどなんかそういう技術があるみたいだw

FastCGI shell script
https://stackoverflow.com/questions/4685045/fastcgi-shell-script
ここの Look at "Writing agents in sh: conversing through a pipe"

まあ一般的にシェルスクリプトでFastCGIは無理(無意味)やでって書かれてるようだね

328 :名無しさん@お腹いっぱい。:2021/05/09(日) 14:40:26.25 .net
んでさ>>309に聞きたいんだけど

> シェルスクリプトはperl にとって代わるCGIの記述言語って本当すか?

ってどういう流れで誰に聞いたの?

二十年ぐらい前にコンピューターにちょっと詳しいだけの高校生や大学生の
会話で出てきた話だってのならわかるけどさ
今のウェブ開発ではCGIという単語自体でてこない

329 :名無しさん@お腹いっぱい。:2021/05/14(金) 08:14:28.21 .net
>>328
年寄りと話すと、API叩くことをCGI呼び出すと表現するよ

330 :名無しさん@お腹いっぱい。:2021/05/17(月) 12:58:38.74 .net
アクセス数が少なければ今でもcgiで十分。

331 :名無しさん@お腹いっぱい。:2021/05/17(月) 19:57:40.30 .net
アクセス数少ないのが前提w

総レス数 624
193 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200