1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/05/03(木) 17:54:23.25 .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 にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう 前スレ シェルスクリプト総合 その26 https://mevius.5ch.net/test/read.cgi/unix/1489979246/
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:13:05.93 .net] たしかにリッチー大佐は酷い人格だけど間違ったことは言ってねえし しかも有用なツールを作ってから、ああいう毒を吐いてる。 上で喚いてるなんの解決策も出さず人を否定し馬鹿にすることしかできない人間と比較するのは失礼千万
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:13:17.92 .net] 誰かちょっと流れをまとめてくれ 誰が何を言いたいのかさっぱりわからん
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:21:58.95 .net] >>475 現実世界で死んだ ↓ 異世界で俺tueeeやってる
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:22:56.01 .net] >>474 > しかも有用なツールを作って なんかあったっけ? 使ったこと無いな
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:42:28.78 .net] 見た目でわかる文字列への置き換え派ですが、いにしえのエスケープコードの流用はいいアイデアだと思いました。
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 01:43:29.77 .net] >>463 後で使うかもだからブログに簡単にまとめとけw 荒らした罰な
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:22:50.42 .net] >>479 俺は書かないよ。だけどこのスレを参考にして誰かが書くかもしれないね。 その場合、このスレを参考にしましたって書いても書かなっくてもいいよ 他の誰かがこことは別に思いついて書くかもしれないけどw
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:45:32.35 .net] スレチの自覚が無いとか、本当バカ
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:49:17.37 .net] シェルスクリプトの話題なのにスレチってどういうこと?
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 02:57:45.51 .net] >>482 俺はすべて分かってた。 ヒントだけ出してやったんだからありがたくいただけ。 これがスレ違い以外の何物だと...
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:07:25.04 .net] ん? シェルスクリプト総合でしょ? 質問スレじゃないし シェルスクリプトの話題で楽しめばいいじゃん?
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:30:27.23 .net] そろそろ仲直りしろよお前ら
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 03:44:51.73 .net] 確かにそれ専用の文字があるならそれを使ったほうがいいね。 some data␟other data␟42␞ some data␟other data␟42␞ ↑こういうの。 既にそういうフォーマットがあってもいいと思うけどざっと検索したところでは見付からない。 なにか不都合でもあるのか、単純にU+001E/Fの知名度が低すぎるのか。 ところでPOSIX awkはRsやFSに任意の文字って指定できたっけ。GNU awkではできたんだけれど。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 04:48:35.52 .net] >>486 https://www.freebsd.org/cgi/man.cgi?query=awk&sektion=1 あるし、STANDARDSはもとより本文でも拡張したよってのは無いからPOSIXとしてあるんじゃね [] [ここ壊れてます]
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 04:51:18.43 .net] pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html こっちかこれか。あるね
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 06:07:49.77 .net] つまらない点だから指摘していなかったが、 この話で U+ という表記はだめだぞ U+ というのはUnicodeの話で+の後の16進数は 文字集合におけるコードポイントだ U+001Eは符号方式がUTF-8だと0x1Eになるが、 UTF-16だと 0x00 0x1E(ビッグエンディアンの場合) もしくは 0x1E 0x00 (リトルエンディアンの場合) となる U+ だとUnicodeという文字集合を表すことになるが 符号方式がUTF-8だと決めつけることはできない
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 09:45:54.74 .net] あほか 最初に本データの形式仕様から制定してもいいという条件を書かないから みんな処理元のデータ形式は弄れない前提で答えてるんやん 説明不足なのに自分だけ神視点でお題気取りか 死ぬほど痛々しいわ
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:09:41.26 .net] ようやく気づいたわ スレを盛り上げたかったんやな
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:26:48.37 .net] 俺が主役が強すぎて贔屓目にみてもだな
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 10:40:14.39 .net] 日本語で
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:22:26.93 .net] >>490 > 最初に本データの形式仕様から制定してもいいという条件を書かないから > みんな処理元のデータ形式は弄れない前提で答えてるんやん データを加工(エスケープ)していいと書いてないのに勝手に加工してるやん? だから変えたら駄目って書いてないなら変えていいって前提で 答えてるでしょ?
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:29:27.18 .net] スレは十分伸びたからもうええやろ 何と戦ってるんや
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 11:43:52.49 .net] 自作自演ではないか
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:33:30.08 .net] 結局特に解決や参考になるような話は出なかったね まあ今更CSVで新ネタも出ないだろう
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:38:57.30 .net] まだお前CSVって言ってんのか? そんなにCSVの話だと勘違いしていたことが ショックだったのか?
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:40:15.04 .net] もう引っ張るなや子供かよ
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:42:59.29 .net] 元データの上書きとバッファにコピーしての加工を同列に語っちゃうんだすげえな ていうか元データの仕様からやっていいなら最初から↓で 改行的な区切り文字を許さない仕様にすればいいだけじゃね > syori "a1" "a2" "a3" "a4" > syori "b1" "b2" "b3" "b4" > syori "c1" "c2" "c3" "c4"
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 13:44:44.59 .net] さんざん偉そうだが全くコードを出さないのでお察しでもういいだろう
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:09:05.24 .net] >>500 特に指定がない部分に関しては、 自由に変えていいと言ったの 改行が含まれてるとか、カンマやダブルクォートが含まれてるとかは 指定されているので、そこは変えたら駄目 当たり前だろ、ガキみたいな言い訳すんな
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:10:12.79 .net] > 自由に変えていいと言ったの 変えていいと言うか、もともと指定がないから 変えるのではなくどんなものでもOKってことだが
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 14:11:48.62 .net] >>502 これには同意する 変えてもいい/変えるべきなのは区切り文字。
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 15:25:33.31 .net] もういい加減コードで語れ どれほど偉そうにしてもコードがアレだったらアレだし、偉そうにしてなくても素晴らしいコードはそれだけで尊敬されるだろう。後者が断然かっこいいのに
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:00:25.01 .net] 意訳 参考にしたいのでコード教えてください
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:04:12.37 .net] いや、全然。使わないもの。それも勝手なお題のだし まあ勉強のためというのでなら、それはあるかもだが、どんなんだかだな。そもそもコードはそういうものだろうし、教えてやるって立場なんだしなw
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 16:50:37.25 .net] >>506 言ってやるなw
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:10:06.71 .net] 結局一行も書けてない
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:15:08.96 .net] ようやくこのスレも静かになるな…
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:51:10.54 .net] そう思うやろ? 次のネタ準備中やで
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 17:56:57.42 .net] なにこいつ
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 18:49:50.82 .net] こいつもしかしてこの間の「標準入力と標準エラー出力を同時に操作したい」のアホか。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/11(月) 18:55:33.57 .net] これ以上くだらん問答するならコテハンつけてくれ
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 03:51:38.30 .net] >>513 これって解決したんだっけ
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 06:46:40.08 .net] 今時Python使わないでわざわざシェル使う理由って?
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 08:01:38.11 .net] Pythonを使う理由が特にないから
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 08:37:27.40 .net] pythonであるコマンドを実行して それを他のコマンドに流すみたいな ことが簡単にできたらね
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 10:53:58.20 .net] 普通にできるぞ
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 11:54:38.75 .net] >>519 じゃあ、これ相当のことをやってみて ここまで簡潔に書ける言語をシェルスクリプト以外しらない シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 11:55:23.82 .net] >>519 じゃあ、これ相当のことをやってみて cat /etc/password | grep /bin/bash | cut -d: -f1 (なんかブロックされたからパスワードを大文字にしてる) ここまで簡潔に書ける言語をシェルスクリプト以外しらない シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:05:07.20 .net] >>520 これってどれ? ここ>>282 -以降にある記述だとてんで仕様になってないから、 仕事レベルとまではいかないまでも、 学生演習の問題として出せる程度には仕様をまとめて書いて。 あとPythonに限らずスクリプト言語はどれでも シェルにパイプ繋いで任意のシェルコマンドが実行できるから、 シェルにできてPythonでできないことなんてないよ。 勿論シェルでできないことも普通にできるし。
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:10:52.66 .net] 大文字w
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:12:33.73 .net] >>522 これは、>>521 に訂正しておいた。見れてるやろ? >>523 多分 /etc/p@ssw0rd がブロックされるんだと思う
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:13:42.07 .net] >>522 > シェルにできてPythonでできないことなんてないよ。 あるよ。 (特定の用途に対して)シェルスクリプトほどに "簡潔にできない"
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:14:36.84 .net] そりゃまあ、冗長でいいなら、アセンブラでなんでも作れますわなw 作れるか作れないかの話なんかしてない
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:34:38.85 .net] >>521 そういうのはperlやawk向きだな。 perl -F: -anle 'print $F[0] if $F[6] eq "/bin/bash"' /etc/passwd awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd pythonはもっと汎用言語よりだからずっと長くなる。 こんな感じか? f = open("/etc/passwd", "r"); for l in f : c = l[:-1].split(":") if c[6] == "/bin/bash" : print(c[0]) ふだんpython書いてないからよくわからん。 専用言語がそれに向いた用途なら、汎用言語よりもコンパクトに書けるのは当たり前。 でなきゃ専用言語の存在価値がない。 でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと 書きやすさも長さも逆転したりする。 ひとつの言語にこだわるんじゃなくて、用途に応じて言語を選択するのが UNIX流だよ。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:43:39.68 .net] import csv [p[0] for p in csv.reader(open('/etc/pas@wd'), delimiter=':') if p[-1] == '/bin/bash']
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 12:44:23.95 .net] >>395 >>396 多分\エスケープ云々は途中でなんらか処理をする時にRFC準拠のエスケープだと不都合だからじゃないかな 「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき RFC準拠だと 「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう? そういうことなんじゃないかな。
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:05:44.44 .net] >>528 やっぱりそのわかりにくいのが限界ですよね
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:48:35.13 .net] >>527 > でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと > 書きやすさも長さも逆転したりする。 まだこだわってんのかw 中身がない反論(?)は惨めなだけやで?
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:51:53.23 .net] 老害じじいかよ
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:55:48.66 .net] その話続けたければいい加減名前つけろ NGするから
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 13:57:32.52 .net] だな。なんで、へー、そう書けるんだとかならずに、あれが駄目これが駄目ってばっかなんかな。会話として見ててくもそ面白くない、いらいらすんなw
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 14:08:40.82 .net] >>527 > pythonはもっと汎用言語よりだからずっと長くなる。 汎用言語だから長くなるんじゃなくて、 Pythonには向かない作業だから長くなるっていうのが正解
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:38:07.06 .net] >>529 RFC準拠ってなんの話してるの? CSV形式ではないと明確に言われてるのに まだCSV形式にこだわってるの?
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:40:26.84 .net] よほどお前がこだわってるな。てかキモいわ
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:46:13.86 .net] 俺はレスしただけだけど? >>529 が書かなければ、この話をすることもなかった
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:49:00.93 .net] 新参なので>>513 ってなんのこっちゃと、ちょっと前スレの当該箇所を流し読みしてはいた。ふーんてな で、>>538 となんか同じようなのがあったようなww
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:51:25.65 .net] お前の落ち度だってのはわかった
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 18:52:26.75 .net] >>540 >>538 のな?w
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:00:28.24 .net] 自分のことだって自覚してるからレスしたんだろ?
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:03:32.17 .net] へ? さすが、自分のことだけはよくわかってるな。それはお前がそうだからだろう 何を言っているのかわからん、>>538 によく似合うレスだなっていう
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:12:05.82 .net] どうも同一人物みたいだが(>>539 に対しての?>>540 あたりからも)、だとしたら>>513 はすげえなっということでw
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:16:54.17 .net] 自作自演
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:18:03.28 .net] いつまでも俺のこと話題にしつづけてくれ! まで読んだ 自意識過剰すぎてきもい
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:21:22.12 .net] >>546 いやあ、本人はそうは思ってなさそうだけど?自己顕示欲は満々みたいだけど まあ、話題にしている>>513 や俺などに対する当てつけ的になら、なんかすまん
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:23:17.23 .net] 自作自演2
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:27:22.55 .net] なにか気に触るようだな、繰り返しとはwなにが気に触ってるのかさっぱりだな
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:37:04.17 .net] これ以上そのクソを撒き散らすなら大量のコピペでスレ埋め尽くすぞ
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:39:25.91 .net] 問題定義をはっきりせずに、回答に対して一方的にダメ出ししてるから当たり前だろ。 >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる) 「シェルスクリプト以外しらない」とかいう視野の狭さを撤回しないし。 ほぼすべてのプログラマーにとってシェルスクリプトってのは 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、 そうじゃない場合があることは当然知ってて、 こんな風
572 名前:に威張って使うものじゃないんだよ。 インフラ担当ならシェルスクリプトが第一言語ってのもありうるけど、 そういう場合にはこんなに威張らないよなあ。 [] [ここ壊れてます]
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:40:09.57 .net] なんでやねんっwヤツより悪質/ヤツ以下になってどうするねん まさかお前(てか、ここ一連の)はヤツじゃないよな?
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:42:22.47 .net] この板ってワッチョイは使えるんだっけ? 次回からいれるか
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 19:42:45.45 .net] >>551 たぶん、前スレの最初の方で言っていた人のヤツの性質があたり的な 真っ当なやりとりはできなさそうな上に逆に私怨を持ちやすいタイプだから、そういう真っ当なのをちゃんと聞くかどうか怪しいな
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 21:34:04.16 .net] シェルスクリプトのデバグに関する質問です eval XXX というコマンドで実行されるコマンドを確かめるには evalをechoに置き換えて echo XXX とやればいいですかね。 両者の間に、実行されるか表示されるだけかの違い以外の差異はありますか? 例えばある種の展開が行われないとか。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:22:58.09 .net] eval を echo に書き換えるという方法でデバッグはできるんだけど、 a='echo $PATH' という状況で echo $a →「echo $PATH」と表示する eval $a →「echo /bin:/usr/bin:/usr/local」を実行する みたいな違いはある。 eval は引数文字列に含まれるシェルのメタキャラクタを再評価するけど、 eval 以外の普通のコマンドではそういうことはないので。 あとデバッグは sh -x スクリプト名(ないしスクリプト先頭で「set -x」)して 実行状況を標準エラーに表示させるってやり方もお勧め。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:40:48.60 .net] >>556 ありがとうございます。 シングルクオートでも展開されるのは盲点でした。 sh -x のほうが確実ですね…… 訊いてよかったです。
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 22:45:26.76 .net] >>557 ちなみにevalで再評価されてるシェルのメタキャラクタは シングルクオートじゃなくて $PATH の $ の方ね。 シングルクオートは代入時に字句解釈されるだけで、 $a の中身には残ってないので。
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:19:14.33 .net] >>551 > >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに > (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる) いや、そんなことドヤ顔で言われましても・・・ 4文字追加で終わりだし cat /etc/password | grep ':/bin/bash$' | cut -d: -f1 減らそうと思えば減らせるし grep ':/bin/bash$' /etc/password | cut -d: -f1 あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w 俺が言ってるシェルスクリプト向きの問題っていうのは 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:34:25.44 .net] >>551 > ほぼすべてのプログラマーにとってシェルスクリプトってのは > 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、 はぁ?第二とか第三とか何いってんだか。 適切な言語を使うだけの話だろ シェルスクリプトじゃなくてPythonを使えばいいと言われたから、 "シャルスクリプトで普段やってること" = >>521 で書いたような 外部コマンドの実行とそれをパイプでつないで簡単に処理することが 簡単にできるって例に出したのに、 お前は「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 というお題を、awkやperlに置き換えるしpythonで全く違うコードに書き換えるしw 今からでも良いんやで、pythonで 「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 を書いてみなよ。 いいか? catコマンドとgrepコマンドとcutコマンドを ちゃんと呼び出すんだぞ。今度は間違えるなよw ほんとシェルスクリプトがなにが得意なのか全くわかってねーわw
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:41:12.01 .net] な?www
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:43:50.91 .net] な?問題を誤解して的はずれなレスを出すんやで 話にならんわ
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:46:19.16 .net] >>5
585 名前:59 > あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w 勿論そうだよ。 正規表現で書ける条件だったから、grepでうまくいった。 世の中には正規表現で書けない条件とかも当然あって、そういう場合 perlやawkなら自明にかけるけど、スクリプト言語使わずに シェルだけで書こうとすると面倒だったりする。 > 俺が言ってるシェルスクリプト向きの問題っていうのは > 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ それに反対してる人は誰もいないと思うよ。 それこそがシェルが特化している応用分野なわけで。 しかし>>521 はそれを示す例題としてはよろしくない。 他の言語ならコマンドの組み合わせとかせずに容易に解ける問題だからね。 [] [ここ壊れてます]
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:47:07.64 .net] お前に言ってない。さすがだなwwいつもその調子。問題出すのもその調子だからなあw
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:48:09.54 .net] >>563 真面目だなっ!w ある意味尊敬(馬鹿にはしてない)
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:13:02.23 .net] >>563 お前が問題を理解できなかっただけのこと >>516 > 今時Python使わないでわざわざシェル使う理由って? 俺はこれ↑に対して、シェルスクリプトの方が適した問題だからって コマンドをつなげて実行できるのが簡単だと↓以下のように>>518 でレスしたわけだが > pythonであるコマンドを実行して > それを他のコマンドに流すみたいな > ことが簡単にできたらね 結局、だから俺が最初から言ってるように、シェルスクリプトの方が 適してるんだろ? ならもうお前口塞げ、混ぜっ返してるだけでなにも役に立ってない
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:20:43.06 .net] >>563 あとなやっぱりわかってないわお前 grepもperlもawkもコマンドなんだよ。 シェルスクリプトっていうのは、そのコマンドを "組み合わせる"のが得意って話だ。 だからgrepもperlもawkもシェルスクリプトのパワーの一つなんだよ。 もちそんそれだけじゃない。便利な多くのコマンドが 用意されてる。それらはシェルスクリプトの関数であると言える pythonで、せっかく用意されたこれらのコマンドを使わないで python用ライブラリとか使って冗長にコードを書くならそれは無駄だし コマンドを使う場合でも、シェルスクリプトほど簡潔にできない。 シェルスクリプト(grep, perl, awkを組み合わせること) VS python(grep, perl, awkコマンドを使う もしくは 使わない) って話であって、perlの方が〜awkの方が〜っていうのは シェルスクリプトの方がシンプルに書けることの反論になってないんだよ。
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:23:56.99 .net] なんか変な人が居着いちゃった
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:24:50.12 .net] >>568 前からやで。ずっといついている ずっと前から俺はいる
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:18:17.08 .net] IDもワッチョイもないからオレオレ言われてもレスの時系列で追えないし面倒だわ まあキチガイ君がお題の条件だしが決定的に出来ない子なのはよく分かる >「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」 >521読んで道程まで完全に一致させろいう意図だと理解できたやつがいたら天才だわ 普段から人と会話してなさそう
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:27:58.12 .net] >>521 grep /bin/bash </etc/password | cut -d: -f1