[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/25 22:56 / Filesize : 258 KB / Number-of Response : 1042
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef