- 1 名前:名無しさん@お腹いっぱい。 [2007/02/15(木) 14:28:44 ]
- シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashなので特に注意。 ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルスクリプトのことをシェルってゆーな ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 前スレ シェルスクリプト総合 その7 pc10.2ch.net/test/read.cgi/unix/1157601611/
- 632 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:24:09 ]
- >>631 は何がしたいんだろうか? まったく外してるわけだが、、
- 633 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:26:16 ]
- >>631
$ ssh solarishost man xargs
- 634 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:33:38 ]
- ファイル名の問題以前に、個々のファイルごとに頭の512バイトを切り出したいわけ
だから、xargs使ったところでプロセス起動数は節約できない。 よって、>>626 >>628 は全く的はずれ。
- 635 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:34:10 ]
- >>632
はずしているのはお前の方。 find 〜 -print0 | xargs --null
- 636 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:47:33 ]
- >>635
はずしているのはお前の方。 -print0 や xargs --null は、一般には使えない。(たとえばSolaris) あと、>>634 が指摘してるように、今回の件は xargsでは解決しない。 よって、そういう意味でも外しているのは >>635 の方。
- 637 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 22:10:53 ]
- -print0で喜んでるのは石器人。
現代人はふつー find ... -exec ... +
- 638 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 22:21:02 ]
- >>632 から某頭の悪い粘着君臭がする。
- 639 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 23:03:19 ]
- て言うか、プロセス起動数が云々と言うなら md5sum を改造するなり、
ファイル名の取得からハッシュの計算までやるようなアプリ作ればい いじゃん。
- 640 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 23:14:55 ]
- >>617-618で既に正答が出てるの何を今更…
- 641 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 00:13:31 ]
- 答えそのものも>627に出てるわけだが...
- 642 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 00:36:28 ]
- #find ... -exec ... +
横レスだが知らなかった ってか手元のmanにはない
- 643 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 03:34:11 ]
- 最後の「+」ってなに?
- 644 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 08:19:20 ]
- xargsは同じプロセスを連続起動するから
工夫されていると聞いたことがある。 これは事実?
- 645 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:14:11 ]
- 基礎的な質問ですいません。
bashで、シェル変数に値を突っ込み -zで存在を確認する手法ですが、 if [ -z $test ] ; then echo "val exist" else echo "val isn't exist" 質問 1.[ -z $test ] と書くのはよろしくない? 2.[ -e $test ] とすると、シェル変数が存在しない時に真、 シェル変数が存在する時に偽となるのはなぜ? 結構、このパターンで利用してたのですが、2.の動作を確認すると、 なぜだか逆になっているような。じゃ、-zもよろしくないのかなぁ、と ところで、みなさんは、環境変数やシェル変数の存在確認をどうやってますか? 宜しくお願いします。
- 646 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 15:23:43 ]
- >>645
まず、[ ] の中ではシェル変数は基本的にダブルクォートを付けること。 [ -z "$test" ] とする。この場合、$testがセットされていれば偽になる。 これだと真偽が逆になってわかりにくいので、 [ -n "$test" ] または -n は省略できるので [ "$test" ] とする。 [ -e $test ] は、$testがセットされていない時、[ -e ] となってしまい、 これは、"-e" という文字列がサイズゼロかどうか(この場合は2バイト)という 判定がなされるため、$testがセットされていないと真になる。 一方、$testがセットされていると、今度は -e は -eオプションとして解釈され、 $testの中身がファイル名とみなされるため、そんなファイルがなければ偽になる。 更に言うと、-e は Bourne shでは使えないため非推奨。
- 647 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:39:39 ]
- >>646
ありがとうございます。 うーーん、なるほど。1行目でよく分かりました。
- 648 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:11:12 ]
- 丁寧に説明してもらった理由を理解したのかしてないのかよくわからん回答だな
- 649 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:12:07 ]
- このあたりものこともあって zsh で手抜きスクリプト書くことが多くなった
- 650 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 16:24:47 ]
- >>648
舌足らずですみません。 1行目で自分の間違いを気付き、 詳しい説明をしていただいたので助かりました、と書きたかったところでした。 -eオプションの非推奨コメントは特に助かります。
- 651 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 21:09:56 ]
- ______
/ ))) / /// /―――-ミ / 彡彡 // / ヽ)) / 彡彡 iiiiiiiiiiiiiii iiiiiiiiii| / 彡彡 < ・ > 、<・ >l / | ヽ 〉 / ( | | __) | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / | ≡ /, ――― |ゝ < 馬鹿共にshellを与えるな! / | | L ___」 l ヾ \_________ _ミ l ______ノ ゞ_ | l ヾ ー / | l | | \ー ‐/ | |
- 652 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:10:33 ]
- >>646
>>更に言うと、-e は Bourne shでは使えないため非推奨。 ?????
- 653 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:30:50 ]
- >>652
教えて欲しいんなら「???」じゃなくて、ちゃんと日本語で書け。初心者君。
- 654 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:19:43 ]
- ところで-eがないshが標準で載ってるOSってどれ?
- 655 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:36:14 ]
- Solarisとか。SCOとか。Tru64とか。
- 656 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:36:15 ]
- >>655
今では使われていないOSばかりですね。じゃあ、-e使ってもいいですねw
- 657 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:45:45 ]
- つっ、釣られないぞ
- 658 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:41:51 ]
- >>653
では日本語で書かせていただきます。 私が学習に使用している O'REILLY の「詳解シェルスクリプト」によりますと、 /bin/sh 組込の test コマンドに於ける -e 表現は標準的なものとして記述され POSIX で定義している旨明記されております。また更に今回の議題の発端である >>645 質問子の環境と共通する bash 等での独自の拡張に付いて記述した件では、 条件判定構文中の -a 演算子について(非推奨です。 -e を使いましょう) とまで明記されているものを、使用者の環境の多用性や使用目的の別など勘案せず 一言の下に「非推奨」と断定できる根拠を教えてください。 お願いします。
- 659 名前:646じゃないけど mailto:sage [2007/06/19(火) 13:47:32 ]
- >>658
「Bourne shでは使えないため」って書いてあるじゃん。 それが重要かどうかは各自が判断すればいいこと。
- 660 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:51:15 ]
- >>658
POSIXは理想論ばかりで、現実に即してないんだよ。 いくらPOSIXでどうこう言っても、実際に動くかどうかがすべて。 test -e については、Solarisの/bin/shで動かないんだから、 OS共通のシェルスクリプトでは非推奨であるのは当然。 あと、別件で、-e の意味で -aを使ってはいけない(非推奨)なのはその通りだよ。 -a は別に ANDの演算子の意味があって、そちらの意味で使うべきだからね。 わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで -e を使ってるのがあったら、気づき次第直しとけよ。
- 661 名前:658 mailto:sage [2007/06/19(火) 14:12:59 ]
- 予想通りの回答をどうもありがとうございました。
>>わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで -e を使ってるのがあったら、気づき次第直しとけよ。 ご心配有り難うございます。 そもそも機能が曖昧過ぎて過ぎて使おうと思ったことも御座いませんw
- 662 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 14:15:20 ]
- 予想してたなら聞く必要ないだろ……。
むだに波風立てんなよ。
- 663 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 22:13:27 ]
- シェルスクリプトの互換性過敏症な奴っていじると面白いんだよ
- 664 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:22:07 ]
- ここにもユトラーか・・・・
- 665 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:28:40 ]
- >>663
export LANG=C とか書いてるのを見ると反応してしまうのは互換性過敏症ですか?
- 666 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:56:18 ]
- いや寧ろ互換性を指摘できる人がいて有難い
- 667 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 00:19:14 ]
- そんなこといって年寄りほめたらわらわらわいてくるぞ。
SunOS 3.5世代の俺なんかまだまだ甘ちゃんだ。
- 668 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 05:31:28 ]
- 沸いてきてくれ
それぞUNIXの面白さの真髄だわ
- 669 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 09:12:11 ]
- 仕事では一緒になりたくねえけどなw
- 670 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 21:45:49 ]
- ようするに、 POSIX が理想論で現実に即していないのは当然の話で、
現実がバラバラだから標準化が必要という理念が生まれたわけですわな。 で、各プラットフォームでそれぞれ POSIX に準拠する姿勢を示していながら どうしても譲れない仕様への拘りがあるから未だに移植性の問題が取沙汰される。 そこの処の理を語らずに、只単に○○では使える or 使えないという議論に 終始するというのは如何にも思慮が浅いと言わざるを得まい。
- 671 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 22:08:39 ]
- 実社会ではそういうもんだ
- 672 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 23:20:26 ]
- 携帯電話みたいなものだね
いまだに携帯電話つかわないもうろくジジイとかいるかなw
- 673 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:34:39 ]
- じじいじゃないけど使ってないよ。
- 674 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:36:56 ]
- うわw
- 675 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:38:49 ]
- 携帯電話使わない仕事というと、医者とかパイロットくらいか
- 676 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:53:54 ]
- というか、どこが「携帯電話みたいなもの」なのかさっぱりわからん。
- 677 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 03:01:35 ]
- 痴呆がはじまった?
- 678 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 23:19:43 ]
- >>670
こだわりなんかないだろ、準拠するのが面倒なだけだよ。 準拠したからって売れ行きがたいして変わるわけでもないし。 >>675 院内では携帯は使わないけど緊急呼び出しが頻繁にあるような 医者もいるからなぁ。 パイロットは仕事中は使わないけど、そういう意味なら電車の 運転手なんかも同じだな。 て言うか、仕事中とか会社の中に限定すると携帯持たない/持て ない奴はそれなりにいるし。
- 679 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 00:04:29 ]
- ケータイでも3G(高周波のやつ)は大丈夫らしいけど。
- 680 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 09:16:46 ]
- 使えない奴にかぎって、くだらねえことに拘ってたりする
- 681 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:12:44 ]
- そろそろUNIXの話にでも戻す?
- 682 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:59:20 ]
- よしなに
- 683 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:11:19 ]
- >>678
>>準拠したからって売れ行きがたいして変わるわけでもないし。 売行きが変わらないからって騒ぐこともないでしょ。 拘りがなければ準拠する方がはるかに楽なのにねぇ あくまで /bin/sh 標準なのは基本であって、実勢はケースバイケースで、 linux じゃ bash 標準だろうし、 solaris だって適宜 ksh なり使うだろうし、 パーソナルユースや $HOME/bin 限定使用とか、管理者でも同一プラット ホームだけでの運用が多く、移植性のプライオリティーがさほど高くない 現況において、やいのやいのいう奴は要するに「言いたいだけ」ちゃうんかと。
- 684 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:53:48 ]
- > 拘りがなければ準拠する方がはるかに楽なのにねぇ
何が楽なのか詳しく書いて欲しいんだが。 商用ソフトってちょっと変えると、検証がスゲー大変なことぐらいは知ってるよな?
- 685 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:08:17 ]
- 楽しいもの見つけてしまった。
sed.sourceforge.net/sed1line.txt www.student.northpark.edu/pemente/awk/awk1line.txt 組込みで使っているLinuxにgrepが入ってなくて sedでシミュレートしたスクリプト書いたんだけど、 それ以上のことがいろいろできそうな感じなり。 おまけ www.fepus.net/ruby1line.txt
- 686 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:11:08 ]
- >>683
Solarisは古いshとkshを選択できるからいいけど、 HP-UXとかAIXは/bin/shはkshそのもなんで選択の余地はない。 シェルごときで移植性とか言ってるアホが多いっていうのは同意。
- 687 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 03:31:47 ]
- 視野が狭いのって、幸せでいいよね。
- 688 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 08:31:29 ]
- そう?いまどきシェルの互換性なんか気にしてる奴って幸せそうに見えないが。
- 689 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 09:38:27 ]
- シェルはさまざまなコマンドと組み合わせて使うしな。
コマンドにも完全な互換性がない以上、シェルスクリプトの互換性や移植性を気にし過ぎるのはアホ。 ささっと書いてテストして動きが変だったら、そのとき直せばいい。 シェルってそういうライトな使い方をするためのものでしょ。
- 690 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:04:55 ]
- 互換性のことも知らずに、暢気に
[ -e file ] とか、export HOGE=hoge とか書いて、 「動いたからOK」とか言ってる香具師の方がアフォに見えるけどな。
- 691 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:28:19 ]
- 「さくっと直せばいいじゃん」って言ってる奴はだいたい直したことがない奴だし。
- 692 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:32:04 ]
- そもそも、直す必要なんてない、動くから
- 693 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:05:10 ]
- >>692
>>690
- 694 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:08:34 ]
- 何が問題か、具体的に
- 695 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 12:54:51 ]
- 問題を理解できていないことが問題なんだろ。
- 696 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 13:08:14 ]
- 互換性がいるのは移植する可能性がある場合だろうかと。
あるいは環境が一部不明な場合か。 ただ、知識としてはあれば有効だろうが
- 697 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:23:00 ]
- 開発当初は特定のシステム限定であったとしても、実社会では
いつのまにかそんな制約はなくなってしまうものなのだよ。 ニートにはわからないだろうが。
- 698 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:53:17 ]
- 自分の体験したことが、現実の全てだと思っている>>697がいるスレはここですか?
- 699 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:16:00 ]
- >>698
「全ての」と「存在する」の違いを未だ習ってないのかい? ぼーや
- 700 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:20:19 ]
- シェルで移植性の高いスクリプトを書くのはめんどうくさいので
Perlを使うようになりますた
- 701 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:25:18 ]
- それはそれで別の移植性の低さが問題になりそうな…
- 702 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:36:58 ]
- Solarisさえ無くなればシェルの互換性の問題はほとんど解決するよね。
- 703 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:55:08 ]
- UNIXのソフト開発標準を策定しようという取り組みはたくさんあった。
だがそうした標準は、POSIX(Portable Operating System Interface)のように 一般的過ぎて役に立たないか、あるいはUNIX戦争として知られる Open Software Foundation対UNIX Internationalの企業連合間抗争に 巻き込まれるかだった。
- 704 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:09:49 ]
- mkmfのようにメタスクリプトを環境依存シェルスクリプトにコンパイルする
プログラムがあるといいと思います!
- 705 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:11:11 ]
- mkmfって、、また古い遺物を持ち出してきたなぁ、、
- 706 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:29:52 ]
- 本当にそんな互換性が必要ならlintの一つや二つとっくにありそうな気がするが、
寡聞にして知らないなあ。
- 707 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:33:44 ]
- >>706
つ dash #まあ呼び出したコマンドの互換性まではチェックできないわけだが・・・
- 708 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:36:48 ]
- 役に立たない、ただそれだけ
- 709 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/24(日) 05:17:26 ]
- すべてのシェルが/bin/shを名乗るのを止めて
/bin/shを永久欠番化すれば解決
- 710 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 02:26:09 ]
- なんかすごい扱われようだな。
互換性を述べている人は割とバランスの取れたUNIX流の解釈だと思うぞ
- 711 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 03:02:50 ]
- どうせUnixなんて適当じゃねえか
varとかetcとか システム変えることになったらどうせテンヤワンヤだ
- 712 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 05:49:56 ]
- ということにしたいんですね:)
- 713 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:17:51 ]
- >>710
素直に自分よりの解釈だと言えば?
- 714 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:43:08 ]
- >>685のは結構凄いと思うが、
>>517のedのヤツはもっと凄いな。 オレもed好きになろう。
- 715 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:37:00 ]
- edで日本語がうまく扱うほうほうがあれば言うことないのだが・・・・
- 716 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:11 ]
- sedにin-placeオプションがなくてperlをよく知らなかったころは
edでやってたな
- 717 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:12 ]
- >715
edより先におまえが日本語をうまく扱えるようになる必要がありそうだ
- 718 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:44:41 ]
- 誰がうまいこといえと
- 719 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 21:37:41 ]
- てか、蒸し返すようで恐縮だけど
シェルスクリプトって、基本的に ash と ksh と bash で動けば 移植性で問題になることは極めて低いよね? この三つで動いても駄目な環境って今どれほど実運用されているのだろうか?
- 720 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 23:39:23 ]
- >>719
Solarisが問題だな。Solarisにはkshが標準で付いてるとは言え、 シングルユーザモードでは使えない。 シングルユーザモードを含めたシステムスクリプトは依然、 /bin/shか/sbin/sh(単にstatic linkというだけで中身は/bin/shと同じ)の 範囲内で書く必要がある。 誰かが書いてたように、Solarisが無くなる(もしくは影響力が無くなる)なら、 シェルの互換性の問題は一気に解決するだろう。
- 721 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:25:59 ]
- Solarisの/binは/usr/binへのシンボリックリンクだからkshやbash使ってもいいんじゃない?
/usr/binの中には/bin/kshで書かれたコマンドもけっこうある。 Solarisのshの動きがヘンなのはたしかにときどきちょっと困る。
- 722 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:42:18 ]
- > Solarisの/binは/usr/binへのシンボリックリンクだから
マジで?
- 723 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:46:28 ]
- > シングルユーザモードでは使えない。
> シングルユーザモードでは使えない。 > シングルユーザモードでは使えない。
- 724 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:50:42 ]
- >>721
マジだよ。/sbinは別れてるけど。 >>720は/usrがマウントできない状況のことを言ってるんだと思うけど最近は/と/usrを分けないのもふつうなんじゃないかな。
- 725 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:53:11 ]
- どっちかっつーとそういう問題でなくて、
ふつースクリプトは#!/bin/shで書くけど/bin/shが何だかわかんねーじゃん? って話では?
- 726 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:29:26 ]
- >>722
HP-UXもだな。
- 727 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:31:28 ]
- ashもいろいろ修正入ってる。
Solarisの/bin/shはそれこそSystemV7のころのものとほとんど変わっていない。
- 728 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 03:37:47 ]
- ・・・ってシェルを使えじゃなくてPOSIXだか何かのsh規格に沿って書けって事だよな。
- 729 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 07:44:21 ]
- >>721
じゃなくて、シングルユーザーモードの時、 /sbin/shはあるが、 /sbin/kshは無い。 /sbin/shはstatic linkの/bin/sh(/usr/bin/sh) だから、シングルユーザーモードも含めれば、 結局 /bin/shの文法の範囲で書かざるを得ないという話。 しかも、Solarisの/bin/shは古いままなので、 export a=b も、$(command)も test -e も、 ちょっと新しい書き方はすべて使えない。
- 730 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 08:03:47 ]
- 互換性の話に便乗だけど、
一部のスクリプトで、未だに ${1+"$@"} って書いてあるのがある。 これ、もう "$@" でいいんじゃないか? 引数が0個の時に ""が残らないようにする措置だろうけど、 Solarisの/bin/shですらそんな不具合は発生しない。(確認済み) なので、"$@"と書いて問題ないし、視認性上も "$@"と書くべきと思うんだが。 本当に ${1+"$@"}と書く必要がある /bin/shを搭載したOSって、 現存してる?
- 731 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:07:07 ]
- >>729
なんか Solaris のシングルユーザモードって不便そうですね。 CD 6枚焼いたけど、インストールを躊躇してしまうよ。
- 732 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:19:42 ]
- / と /usr をわけたりしなければ気にする必要ないよ。
- 733 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:07:41 ]
- >>724, >>726
なるほどねぇ、知らんかったよ。ありがと。 >>730 書き換えるのが面倒なだけなんじゃないか? 目障りだと思うなら、君が片っ端から書き換えて動作検証してあげればいいと思う。
- 734 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:19:19 ]
- >>732
すんません BSD ユーザなもので、 / と /usr を分けるというのが イマイチ良く解かりません。 ad0s1a に全部突っ込めって事ですか? /var も /tmp も含めて・・・(よーするに swap 以外は同じパーテーション?) Solaris だとそんなの有りなんだぁ。(BSDでも無いことは無いけど、なんだか・・)
- 735 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:36:43 ]
- OSは別に関係ない。パーティションの切り方なんて好みの問題だ。
- 736 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:43:05 ]
- >>735
でも、その好みの問題に対して Solaris はシングルユーザモードの 挙動をもってして、ユーザに介入してくる分けでしょう? >>732 のレスからは、そういう風に読めるのだが?
- 737 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 00:09:08 ]
- どうでもいいけどよそでやってくんないかな。
- 738 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:10:23 ]
-
>>730 の ${1+"$@"} てどうゆう意味なの?? なんか理解できん・・・(TT
- 739 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:18:04 ]
- >>734
NetBSDのデフォルトは分けないからBSDユーザーってのは言い訳にならない。
- 740 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 07:33:15 ]
- あと、未だに
if [ X$HOGE = X ] なんてのも見かける。これも、 if [ "$HOGE" = '' ] と書いたほうがいい。 むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、 [ = = '' ] みたいになるとエラーになるtestに対する対処として、 X$HOGE とかいう回避法があったけど、今の testコマンドでそれが必要なのは もう現存しないはず。
- 741 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:01:16 ]
- >むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、
ちがう。 $HOGE の内容が -f だったような場合に対する対処だから、今でも有効。
- 742 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:16:42 ]
- >>741
$HOGE の内容が -f でも正常に動くんだけど。 [ -f = hoge ] みたいに、項が3つある時は、 -fはファイル存在オプションとはみなされないから -f だった時駄目になるような/bin/sh搭載した OSって 何?
- 743 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:36:59 ]
- >>742
a="-f" b="-a" c="=" d="" test X"$a" = X"$b" -a X"$c" = X"$d" echo $? test $a = $b -a $c = $d echo $? FreeBSD の ash、Solaris の sh, ksh、GNU bash いずれでも異なる結果になりました。
- 744 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:39:58 ]
- >>743
それは、複数の式を -a (AND) でつないだ場合の話。 それだと確かに式の評価がおかしくなることがあるが、 [ $HOGE = hoge ] なら、X$HOGE とする必要はなし。 Solarisの/bin/sh でも [ -f = -f ] は無問題。
- 745 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:43:14 ]
- -a 使ってるかどうかで場合わけするより
一律で X$HOGE にしといた方がおしゃれ。
- 746 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:48:53 ]
- >>745
-a 使う場合は、各評価式ごとに \( \) で括るのを推奨。 [ \( "$a" = "$b" \) -a \( "$c" = "$d" \) ] ↑みたいにね。これで、X"$HOGE" は不要。
- 747 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:54:19 ]
- >>744
> [ $HOGE = hoge ] なら、 クォート忘れてる。 > X$HOGE とする必要はなし。 ダウト。 そのへんの対バカ性能をどこまで頑張るかはヒューリスティックで実装依存。 たとえばFreeBSDのtestでは $ HOGE='!' $ [ "$HOGE" = hoge ]; echo $? [: =: unexpected operator 2 となるので変数に任意の値を想定するなら "X$HOGE" = Xhoge は依然必要。 常にtestの引数が正しい式となるよう書くにしくはなし。
- 748 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 15:06:47 ]
- >>747 氏に聞きたいのだが、
>>730 についてはどうお考え? ${1+"$@"} は以前必要? もう不要で "$@"で桶?
- 749 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 15:09:08 ]
- ここでポリシー決めても
どこ使うんだろ。
- 750 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:18:00 ]
- こういう突っ込んだ話まで網羅してる本は無いの?
- 751 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:20:30 ]
- 結局トラディショナルな書式に落ち着くんだよな...
- 752 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:25:52 ]
- 文字列の比較なら [ X"$HOGE" = hoge ] なんてするより
case $HOGE in hoge) にするなぁ。 caseだと、たとえ$HOGEの中身が ! だとか -f -a とか特殊記号だったとしても すべて無問題だから。
- 753 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:31:27 ]
- >>750
詳解シェルスクリプトを企画するか
- 754 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:35:22 ]
- 需要ないだろー
- 755 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:37:22 ]
- wikiでいいんじゃね
- 756 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:38:15 ]
- 需要とかそういうことに興味あるのかしら?
- 757 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:39:17 ]
- >>756
本売るつもりなら大事でしょ。
- 758 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:40:07 ]
- 需要ないだろ。問題になるのSolarisだけだし、Solarisユーザーの人数が、、、
- 759 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:41:25 ]
- >>757
>>756 が言ってるのは、ユーザーがシェルの互換性に興味あるのか? ってことでは (需要に興味があるかどうかじゃなく)
- 760 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:49:09 ]
- 今時、シェルスクリプトの本なんて、全く売れないとは言わないにしても
何冊くらい売れるんだ? このスレでも>>4にある本の話なんて全然出ないし。
- 761 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:50:30 ]
- 入門書はそれなりに売れるんじゃないの?
そういうの読む人がここの話に参加しづいらいだけで。
- 762 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:52:47 ]
- getopts は互換性あるの?
- 763 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:59:17 ]
- >>762
よほど古いシェルじゃない限り互換性ある。でもなぜか出番なくてあまり使わない。
- 764 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:02:34 ]
- 詳説正規表現もこんなのみんな興味あるのかよとかおもったけど
意外に受けたらしいから
- 765 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:11:11 ]
- 互換性があって、どのシェルでも使えるのに、
使ってるの見たことないコマンドの筆頭が readonly だな。
- 766 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:12:21 ]
- >>763
ありがとうございます。 もうひとつ質問なんですが、ポータブルかつ安全に一時ファイルを作成するにはどうすればいいのでしょうか。
- 767 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:12:31 ]
- UNIXシェルの新刊はここ2年くらいやたら出たが、
もうこの分野で出ても意味ないわな。 カーニハン&パイクとブルース・ブリンけあればいいんじゃないか。
- 768 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:17:41 ]
- >>766
どこまでの安全性を言ってるのかわからないけど、 (unask 77; > /tmp/hoge$$) じゃだめかい? mktempコマンドは、必ずしもあるとは限らないと仮定するべきなのだろうか?
- 769 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:21:56 ]
- mktemp(1) を勧める文書は「pidは容易に推測できるので危険」とか書いてますよね。
実用上はほとんど問題にならないのでしょうが、気持ち悪いので何か安全な方法があるのかお尋ねしました。
- 770 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:31:34 ]
- 本当に安全でないといけないなら、
mkdirとかでちゃんとロックして、 失敗したら別の名前で試すとかするしかない。 作るディレクトリのパーミッションちゃんとしとけば 推測されてもかゆくもないでしょ。
- 771 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:49:36 ]
- cat /dev/urandom | od -x
- 772 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:09:45 ]
- >>771
/dev/urandom はポータブルではないわけで、、
- 773 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:10:47 ]
- こういう時はお約束だろ
>>771 catが無駄です。
- 774 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:45:41 ]
- 正規表現もそれぞれで実装がまちまちなのに、なにを言ってるのか
- 775 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:53:31 ]
- そもそも正規表現エンジンが内蔵されてる sh なんかあったっけ?
- 776 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:07:27 ]
- 詳説シェルスクリプトが必要とされているな
- 777 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:09:05 ]
- なんで正規表現の話が出てきたんだ?
- 778 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:13:15 ]
- 774さんの説明に期待
- 779 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 01:27:29 ]
- 激しくどうでもいいが、Solarisの/sbin/shは動的リンクされているぞ。
ていうか、間違いだらけの知識を持ってるやつほどSolarisをバカにする傾向があるな。
- 780 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 01:33:43 ]
- >>779
Sol10 からね。Sol9 までは static link。
- 781 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 03:23:19 ]
- 最近Solarisを使いだした奴に限って、Solarisをマンセーしたがる傾向があるな
の間違いでした
- 782 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 16:06:14 ]
- >>748
747じゃないけど "$@" -> ${1+"$@"} とするのは set -u でもエラーにならない為かと すくなくともある環境では0を除いた位置変数が未設定なら前者はパラメータ未設定エラーになるから 別に""の互換性の理由だけで${1+"$@"}にする訳ではないでしょ
- 783 名前:782 mailto:sage [2007/06/30(土) 16:14:29 ]
- 誤) 為かと
正) 為でもあるかと
- 784 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:05:31 ]
- >>782
実際に ${1+"$@"} が使われてるのは set -u のところじゃない。 コマンドのラッパーで引数を渡す時の話。 なので、>>782 の話は当たっていない。
- 785 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:10:16 ]
- ${1+"$@"} と書くのは、位置パラメータがない場合に
空文字列が残らないようにするため。 他に、${@+"$@"} という書き方もある(あった)。 今議論になってるのはそこじゃなくて、 未だに ${1+"$@"} が必要なシェルが現存しているかどうか、 現存しているなら そのOS名は? という質問。
- 786 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:59:27 ]
- >>784-785
「でもあるかと」と訂正してるんだが 実際 set -u 設定状態でコマンドラッパーに"$@"で渡そうとしても $@ を評価(展開)する段階で未設定と判定された訳で 空文字列が残るかどうかなんて今時大抵解消されてるでしょ 幾つかのOS、幾つかのB系シェルを触ったことはあるけど個人的には見たことがない ただ単純に ${1+"$@"} -> "$@" として問題ないか?と聞かれたら set -u で問題が起きるからダメだと
- 787 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:24:29 ]
- >>786
で、その set -u で問題が出たOSって何?
- 788 名前:782 mailto:sage [2007/06/30(土) 18:25:32 ]
- 上の文、言葉のチョイスが変だわ
もともと空文字列対応で今時 ${1+"$@"} とする必要はあるか?かもしれんが、 たとえその為の対応が不要になったとしても、${1+"$@"} -> "$@" にしていいことにはならんよと言いたい 理由は以下のスクリプトを実行するとエラーになる環境もあるからと #!/bin/sh set -u echo "$@"
- 789 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:29:44 ]
- >>788
だから、そのエラーになる環境は何なのかと。 俺のところの *BSD/Solarisとあと犬で、エラーになるのはひとつもないのだが。
- 790 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:56:23 ]
- >>789
そのSolarisじゃないの? ほんとに試してみた? バージョンによるのかな? 結局互換性の最大の問題はいつもSolarisだなww
- 791 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 20:36:50 ]
- 古いSolarisで見限っちゃったやついっぱいいるからな
いまのSolarisをしらない奴がいてもしょうがない
- 792 名前:名無しさん@お腹いっぱい。 [2007/07/03(火) 01:38:27 ]
- 今のソラリスは早いの?
おそーーーーーーーーいので、あまり使いたくない。
- 793 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 12:33:55 ]
- 昔からCPUなりのスピードは出てると思うがな...
- 794 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 12:36:32 ]
- rm -rf /なんてもう古い
時代はmv /bin /ms.green
- 795 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:29:33 ]
- 誰か教えて。Bシェルで
test 1000000 -lt 9999999999 の結果が正にならないんだけど。数値型の値に制限とかあるのかな?
- 796 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:31:41 ]
- >>795
bashだと無問題。「正」じゃなくて「真(0)」な。
- 797 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:35:06 ]
- 小さい値だとちゃんと真(0)になるんだけどなんでかな。
- 798 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:35:10 ]
- >>795
実装依存だな。シェルによっては 31bit整数最大の 2147483647 が扱える最大値。
- 799 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:37:55 ]
- >>798
ありがと。ちなみに対処法って何かあったりする?違う言語使うしかないか。
- 800 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:42:13 ]
- >>799
bcに喰わせるとか。bcだともっと大きい数まで扱える。 echo '1000000 < 9999999999' | bc bcでは、testとは逆で、真の場合1になって、それが標準出力に出る。
- 801 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:55:38 ]
- ありがとう。試してみます。
- 802 名前:名無しさん@お腹いっぱい。 [2007/07/05(木) 22:47:11 ]
- ipアドレスを0101って2進数にするにはまず・・・・・・・・なにすればいいの?
- 803 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/05(木) 23:01:13 ]
- 小数点までを取り出す
- 804 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 01:13:45 ]
- こんなのでどうだろう
(echo obase=2; echo 1.2.3.4 | tr '.' '\012') | bc | xargs -n 1 printf %.8d
- 805 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 01:23:00 ]
- もちょっとカイゼン:
旧:(echo obase=2; echo 1.2.3.4 | tr '.' '\012') | bc | xargs -n 1 printf %.8d 新:printf %d%.8d%.8d%.8d `echo obase=2.1.2.3.4 | tr . \; | bc`
- 806 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:00:27 ]
- shebang が #!/bin/shのシェルスクリプト test.shを PATHの通った$HOME/bin に置いたところ、
tcsh では $ test.sh で動作するのに、 bash では $ test.sh で動作せず、 $ bash -c test.sh でも動作しませんでした。 /usr/local/bin/以下に置いたところ、 bash上の $ test.shは動作しましたが、 やはり、$ bash -c test.sh は動作しません。 この原因は、どのあたりにあるのでしょうか。 ヒントでよいので教えてください。
- 807 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:26:25 ]
- >>806
(t)cshと(ba)sh では、PATHの変数が違う。本当はPATHを通し忘れているというオチ。 あるいは、.bashrcでPATHが再設定されてしまっているとか。
- 808 名前:806 mailto:sage [2007/07/06(金) 10:42:36 ]
- >>807
bash上で、$ set | grep PATH すると、$HOME/binも入っているのですが、 やっぱり、PATH関係っぽいですよねぇ。 $ bash -c test.shができないのが気持ち悪いです。 ちなみに、$ $HOME/bin/test.sh では実行できました。
- 809 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:46:13 ]
- >>808
setじゃなくて、printenvで確認した方がいい。 シェル変数のPATHのみセットされていて、exportされてない可能性がある。 すると、bash -c とかやった時、新しいbashにはPATHが引き継がれないから、 そういう現象が起きる。
- 810 名前:806 mailto:sage [2007/07/06(金) 10:59:27 ]
- >>809
exportされないというのは盲点でした。 おっしゃるとおり、 $ printenv | grep PATH をしたところ、$HOME/binも含まれていました。 一応、.bashrcでの設定はきいているんですよね。 ググったところ、Cygwin上では、 bashのバグ?かなにかで、bash -c がきかない現象があるようです。 遅くなりましたが、自分の環境は linux 、bash 3.1 です。
- 811 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 11:09:47 ]
- ユーザ名だけ伏せていいから、完全なスクリーンダンプ出せ
- 812 名前:806 mailto:sage [2007/07/06(金) 12:10:14 ]
- >>811
席を外していまして、遅くなってすいません。 スクリーンダンプは以下のようなものでよろしいでしょうか。 実はtest.shは、navi2chインライン画像表示のためのシェルスクリプトで引数もとります。 i) bash上で実行 $ bash --verbose -c navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif navi2ch.makethumb $ sh -x navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif + tmp=/tmp/navi2ch-thumbnails + origfile=/tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif + thumbfile=/tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + thumbsize=300x150 + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' -z '' ']' + /usr/bin/wget www.google.co.jp/intl/ja_jp/images/logo.gif -q -N -x -P /tmp/navi2ch-thumbnails + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + thumbsize=300x150 + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' -z '' ']' + /usr/bin/wget www.google.co.jp/intl/ja_jp/images/logo.gif -q -N -x -P /tmp/navi2ch-thumbnails + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' ++ identify -format %n /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif + scene=1 + '[' '!' -s /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg -o /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg -ot /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' 1 -gt 1 ']' + convert -sample 300x150 /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + echo -n /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg
- 813 名前:806 mailto:sage [2007/07/06(金) 12:13:07 ]
- >>812
上の方の $ bash --verbose -c では、画像は取得されませんでした。 下の方の $ sh -x は、画像が取得されました。
- 814 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:18:15 ]
- なんかよくわからんけど
フルパス指定じゃだめ?
- 815 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:32:04 ]
- 改行コードが CRLF になってないか?
- 816 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:39:22 ]
- >>812
test.shが問題だというから、 ちゃんと問題を切り分けて小さくしてるのかと思ったら、それかよ .bashrcの中身も、printenv PATH そのものも、隠さず出したら?
- 817 名前:806 mailto:sage [2007/07/06(金) 12:52:00 ]
- /usr/local/bin/下のnavi2ch.makethumbを消し、~/bin/navi2ch.makethumbだけにして、
もう一度試したところ、bash上でも $ navi2ch.makethumb 引数 が実行できました。 しかし、 $ bash -c navi2ch.makethumb 引数 は、やはり実行できませんでした。 >>814 フルパス指定だとbash上でも実行できます。 一応、回避策として、/usr/local/bin/に置いているので、具体的な支障はないのですが、 "bash -c"だけがうまく動いてくれないのはなぜだろうと不思議に思って、質問しました。 だから、本当はこんなにレスしていただくほどのことでなくて、申し訳ないです。 >>815 nkf でチェックしたところ、EUC-JPでした。(環境はja_JP.UTF-8) cat -v で見ても、改行コードらしきものはありませんでした。
- 818 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 13:06:23 ]
- PATHの問題は知らんけど、引数を渡すのなら
bash -c 'navi2ch.makethumb 引数' じゃないと駄目だろ
- 819 名前:806 mailto:sage [2007/07/06(金) 13:07:41 ]
- >>816
#!/bin/sh echo test のようなシェルスクリプトですと、~/bin/以下に置いて、 $ bash -c test.sh test と実行できます。 $ printenv PATH /home/mona/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games ふだんbashを使っていないので、~/.bashrcはありものです。 ~/.bashrc PATH=$HOME/bin:$PATH ↑とりあえず、これだけにしました。 これでもやはり、 $ bash -c navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif では画像を取得できませんでした。 "bash -c"はいろいろときびしそうですね。
- 820 名前:806 mailto:sage [2007/07/06(金) 13:12:21 ]
- >>818
$ bash -c 'navi2ch.makethumb 引数' で画像を取得出来ました。 超基本的なことに気付かず、おさわがせして申し訳ないです。 どうもすみませんでした。 ほんとうにごめんなさい。
- 821 名前:名無しさん@お腹いっぱい。 [2007/07/15(日) 17:20:37 ]
- blog.miraclelinux.com/thethird/2006/12/post_4e7b.htmlo
(sleep $ALIVE_TIME; ps $$ && kill -INT $$; sleep 1; ps $$ && kill -KILL $$) 1秒待ってもう1度だけkillしてるのはなぜなんですかね?
- 822 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/15(日) 17:56:03 ]
- >>821
よく見ろ。-INT と -KILL で違うだろ。
- 823 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/15(日) 22:02:12 ]
- 本当だ。失礼しますた。
- 824 名前:名無しさん@お腹いっぱい。 [2007/07/16(月) 22:04:04 ]
- シェルスクリプトでif文に正規表現による文字列一致条件を記述できないでしょうか?
sedなどを使ってやればできないことはないですが、 if文一発でできればいいなと。。
- 825 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:07:47 ]
- >>824
できない。 正規表現と言ってるが、実際にはワイルドカードで十分なことが多い。 ワイルドカードなら ifの代わりに caseを使えばできる。
- 826 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:08:01 ]
- case使え。
- 827 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:25:25 ]
- モレはいっつもテストコマンドの中でegrep使ってるけど・・・・素人なのでアフォな事やってるのかも。
- 828 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 23:48:40 ]
- if expr $string : $regex >/dev/null; then
...
- 829 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/17(火) 23:10:26 ]
- >>827
機能・性能に問題なきゃそれで充分だろ。 コンピュータ (て言うか、道具) なんて楽するためにあるんだから。
- 830 名前:827 mailto:sage [2007/07/17(火) 23:45:10 ]
- じゃあ、>>824もそれでよろ(w
- 831 名前:名無しさん@お腹いっぱい。 [2007/07/22(日) 20:41:39 ]
- UNIX上からリモートでWindowsのバッチを起動させるシェルスクリプトを
作りたいのですが、実装イメージがまったくわからず困ってします。 Win相手に対してrshは使えないであろうし。。。何かいい方法をご存知の方 いらっしゃいませんか。よろしくお願いいたします。
- 832 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 20:44:38 ]
- スレ違い
- 833 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 21:38:16 ]
- >>831
cygwin + sshdとかな。
- 834 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 23:07:17 ]
- >>831
Windows が 2k / XP なら、telnet でどうぞ。
- 835 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 23:07:46 ]
- >>831
>Win相手に対してrshは使えないであろうし 使えるよ sohda.net/cygwin/treebbs/treebbs.cgi?kako=1&all=232&s=232 www.uhero.info/techinfo/CygwinSSH_setup/index.html
- 836 名前:824 [2007/07/22(日) 23:08:49 ]
- 実行時間は case < expr < sed だったので
結局、caseにしときました。
- 837 名前:831 mailto:sage [2007/07/22(日) 23:48:25 ]
- >>833>>835
アドバイスありがとうございます。cygwinについて あまり知識がないので調べてみます。 >>834 telnetで可能ということは、Win上でtelnetサービスを 稼動させておけばいいということでしょうか? 明日にでも実施してみようと思います。 ありがとうございました。
- 838 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 01:24:43 ]
- > telnetで可能ということは、Win上でtelnetサービスを
> 稼動させておけばいいということでしょうか? 手元の 2k だと特にわざわざ入れた覚えはないから、多分 標準で入ってると思う。 サービスの中に telnet ってあるはずだから、それを起動 するだけ。 常用するなら、スタートアップの種別を「自動」にする。
- 839 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 03:17:55 ]
- telnetは対話型だから、ダメというかめんどくさいだろ。
- 840 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 07:39:36 ]
- expectとか使えばいいだけじゃないの?
- 841 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:43:20 ]
- 下記のようなファイル検索をするシェルを作ったのですがうまく動きません
#!/bin/csh echo 検索するファイル名を入力してください: set filename = $< (find /* -name $filename -type f -print > /dev/tty) > & /dev/null 「hoge.txt」を検索する場合はうまくいくのですが、 ワイルドカードを用いた「hoge\*」の検索をすると検索を行わずに一瞬で終了してしまいます。 setで変数に"\*"を入力するのは不可能なのでしょうか?
- 842 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:45:14 ]
- 今日はカレーにする
- 843 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:50:39 ]
- >>841
>>1
- 844 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:52:21 ]
- ・シェルスクリプトのことをシェルってゆーな
クオートすれば?
- 845 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:31:26 ]
- シェルってゆうな。クズ。
csh捨てろ。クズ。
- 846 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:34:46 ]
- スルーカ
- 847 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:44:48 ]
- >>843-845
すんまそん、会社でシェルシェル言ってるもんで癖がついてました。 クオート試してみることにします。 cshは会社の都合なんすよ
- 848 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 06:21:28 ]
- >>847
最初の行に sh と書きゃいいじゃん。
- 849 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 12:34:58 ]
- >>848
実社会で勉強してね cshからshに変えるのは容易ではないのだよ シェルスクリプトは1人で作るのではないし 1つの会社で作るものでもない
- 850 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:06:37 ]
- つまり、1人だけではなく1つの会社だけでもなく、
いくつもの会社にまたがって何人もの人がよってたかって >>841みたいなスクリプトを書いているわけだな。すげぇ。 つーか、csh を使うにしてもせめて #!/bin/csh -f にしろよ。
- 851 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:13:50 ]
- >>841
の例は、わざわざcshの欠点が目立つような典型例だな。 ワイルドカードの展開の問題とか、 findのstderrを捨てるために苦労してるところとか。 そもそも、findをインタラクティブに実行させるようなスクリプトは、 システム管理用スクリプトじゃない。初心者ユーザー向けに作ったものだろ。 こんなの、/bin/shで書き直せば一発。 >>841 が抱えているcshでの問題も一気に解決する。 >>849 へ。 みんな実社会で「cshスクリプトは使わない」が常識だといってるんだよ。 >>849 は自分の会社名を公表しない方がいいよ。会社の不名誉になるからね。
- 852 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:15:45 ]
- cshじゃなきゃだめな会社ってどこ?
- 853 名前:849 mailto:sage [2007/07/25(水) 14:57:09 ]
- >>851
ま、会社名を挙げる気は無いけど、 おれんとこでは全部のスクリプトがcshだし スクリプトの作成・保守を依頼している会社も cshで作るようになっている。 OSが古いもの・新しいものが混在しているのも 理由ではあるが、 常識など、会社によって違うものだろ。 シェルがダメなのは分かるが、 シェルを変えろとか無理な話だ
- 854 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:59:19 ]
- HP-UXでkshを使っているのですが、C-p・C-nで履歴検索ができるとmanpageに書いてあるのですが、
実行しても何も起きません。 どうすればよいのでしょうか? また、linuxのbashみたいに↑↓キーで履歴表示をしたいのですが、 kshで実現可能でしょうか?
- 855 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 15:07:05 ]
- >>853
> OSが古いもの・新しいものが混在しているのも理由ではあるが、 /bin/shが存在しないUnixなんて無いんじゃないのか > シェルがダメなのは分かるが、シェルを変えろとか無理な話だ へえ。cshがダメなのははるか前からの常識なのに、誰もその やりかたを変えようとせず、変えるのは「無理」だと思ってるんだ。 しかも古いスクリプトだけでなく、新しいスクリプトもわざわざ cshで書き、ゴミを製造し続けていると。 勿論、C++やJavaやPythonなんて誰も使わないんだろうな。 ソース管理は未だにCVSでさえない、いやソース管理なんて概念もないね? お前さんがアホなのか、会社がアホなのかは知らないが、実に見事に アホだな。
- 856 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 17:35:21 ]
- 会社の都合なら仕方ないんだから
そんなに必死に弁解しなくていいよ
- 857 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 20:55:10 ]
- >>853
だってさ、起動スクリプトとかOSに元々内蔵されてるスクリプトはshだよね? そういうスクリプトを修正する時も、cshで書き直してるの?
- 858 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 23:13:35 ]
- 棄てる気になれば簡単に捨てられる。棄てられないのは>>853がヘタレなだけ。
- 859 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 23:54:41 ]
- 恐ろしいことにうちはコーディングルールでcsh使うことになってるorz
おまけに最近スクリプトでsql実行してるのを、「COBOLで実装しろ」って指摘された… SQLの使い方調査があって、スクリプトが調査範囲から漏れたからだと。
- 860 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 00:27:56 ]
- >>859
つまりOSインストール時からあるスクリプトも全部cshで書き直してるって事か?
- 861 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 00:40:11 ]
- 間違っているルールを変更できないなんて将来の無い会社だな。
- 862 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 01:32:53 ]
- >>859
なんでcsh使うことになったの?
- 863 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 04:05:17 ]
- 袋叩きw
csh好きな勉強不足の若者の脳内会社なんだから許してやれよw
- 864 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 10:27:50 ]
- 某社と某社はcshだったな
皆さんがんばってね
- 865 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 14:51:51 ]
- 古いBroadVisionなんかだと、パッケージに
cshで書かれたシェルスクリプトがいっぱい付いてくるから 仕方が無い
- 866 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 14:57:19 ]
- 会社で使うシェルスクリプトなんてコマンド順番に起動して
戻り値チェックするくらいのもんだからな。
- 867 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 17:05:58 ]
- それですむならそれでいい
- 868 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 18:40:09 ]
- ジュセッペさんお元気?
- 869 名前:名無しさん@お腹いっぱい。 [2007/07/27(金) 00:19:38 ]
- Zshまんせー
- 870 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 01:30:36 ]
- >>866
俺はシェルスクリプトがないと会社で生きて行けんが。
- 871 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 02:53:31 ]
- これお勧め:
つ ln /bin/sh /bin/csh もっといいのは#!起動された時にスクリプトを調べて 昔からのcshスクリプトなら「しょうがなく」csh、じゃなきゃ shにディスパッチするようにするとか。Linuxなら簡単だな。
- 872 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 04:33:23 ]
- まぁ、/bin/shのシェルスクリプトを書かせたらbashスクリプトを書きやがったとか
*.shのファイルを開いたらbashスクリプトだったなんて事を無くす為なら cshしか使うなってのもありかも知れん。
- 873 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 07:10:12 ]
- ないないw
- 874 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 08:49:35 ]
- 20年モノのcshスクリプトが10万行単位である
とかね
- 875 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:08:29 ]
- csherは平気でコピペで行数倍増するから10万行も妄想じゃないな。
- 876 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:22:10 ]
- そんなコードだったな
- 877 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:53:59 ]
- 昔、(偽装)派遣で行ったところは csh が標準だったよ。
ひ孫請の俺がルールを変えるなんて無理だった。 当然ソース管理なんて概念もない。ファイルはタイムスタンプ (mtime)で管理してたよ。もー馬鹿かアフォかと。 とりあえず、自分のコードは SCCS で管理してた。 当然フリーソフトウェアなんて得たいの知れないものは 使用禁止。 まだあの会社あるかな…
- 878 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 00:03:54 ]
- 某独立系大手とか
某システム系大手とか
- 879 名前:名無しさん@お腹いっぱい。 [2007/07/28(土) 01:05:38 ]
-
folder>------folder1---test | ---folder2---test folder1内にある実行ファイルtestを実行して、 その終了を待って、folder2内のtestを実行する というスクリプトを作ったんですが、folder2の実行が行われません。 どこがいけなかったんでしょうか?ご教授ください。 #!/bin/sh for i in 1 2 do cd folder$i nohup test wait $! cd .. done
- 880 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 01:12:09 ]
- まず、なんでいちいちwait入れるのかわからん。
ほっとけば、終わってからしか次が実行されんだろ? あと、本当にtestって名前なのか? /bin/testかビルトインのtestが動いてるだけでは?
- 881 名前:879 [2007/07/28(土) 01:24:56 ]
- >880
実際は、testっていうプログラムじゃないんですけど、 実行すると1日くらい走り続けるものです。 wait入れなくて実行したら、二重に実行されてしまったので。 二重に走らないようにしたいので、wait入れたのですが。
- 882 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 01:58:54 ]
- 実行したいモノを列挙すればいいんじゃね?
それで満たせない要件は後だしでくるような気もするけど
- 883 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 02:20:46 ]
- cronかなんかで後から起動しちゃってるだけ?
waitって子プロセスの終了待つだけなんだから バックグラウンドで動かさん限り無意味
- 884 名前:名無しさん@お腹いっぱい。 [2007/07/28(土) 03:15:41 ]
- awkについて質問です。
echo "<tr><td></td></tr>" | awk '{print $1, $2, $3, $4}' とすると、以下のように分解して代入されるようにしたいのですが、 awkのオプションをどのように指定すればよいでしょうか? (同じことができるなら、awk以外でも構いません) $1=<tr> $2=<td> $3=</td> $4=</tr> よろしくご教授お願いします。
- 885 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 07:42:41 ]
- sed 's/></> </g' < "<tr><td></td></tr>" | awk '{print $1, $2, $3, $4}'
- 886 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 08:52:38 ]
- < "<tr><td></td></tr>"
この部分は何だ?
- 887 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 09:32:29 ]
- そのくらいわからないのか
<tr><td>< というディレクトリの下に td>< という子ディレクトリがあって、その下に tr> というファイルがある。 その内容が <tr><td></td></tr> なのだ。
- 888 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 09:46:10 ]
- hagewarosu
- 889 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 16:48:50 ]
- >>884
なんで echo の中で FS 使っちゃいけないの?
- 890 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 16:52:40 ]
- おばあちゃんの遺言で
- 891 名前:名無しさん@お腹いっぱい。 [2007/08/01(水) 00:31:16 ]
- for f in 'ls -1'
do echo ${f} done とか for s in 'cat hoge.txt' do echo ${s} done なんかは、基本だな
- 892 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 01:12:54 ]
- >>891
何が言いたいのかさっぱりわからん。
- 893 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:11:41 ]
- if分で「$numbarが10から1000の間なら」という分岐は可能でしょうか?
if [ $numbar = 10 -o $numbar = 11...] と地道に書いていくしかだめですか?
- 894 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:24:09 ]
- っman test
- 895 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:38:29 ]
- case $number in
[1-9][0-9]|[1-9][0-9][0-9]|1000) .... ;; esac
- 896 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 08:14:47 ]
- >>895
0点
- 897 名前:numbar warota mailto:sage [2007/08/01(水) 21:58:49 ]
- >>893
[ "$number" -ge 10 -a "$number" -le 1000 ]
- 898 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 22:58:41 ]
- >>897
引っかけ問題に引っかかりましたねぇ。 >>893 の問題では、シェル変数名は number じゃなくて numbar 前任者から引き継いだスクリプトとかで変数名がミススペルで、 自分が正しいスペルで書き足すと動かなくて1日悩むこと、よくあるでしょ? そのための練習問題でした。
- 899 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 23:03:02 ]
- >>898
死ぬほどどうでも良いですね。
- 900 名前:名無しさん@お腹いっぱい。 [2007/08/02(木) 20:28:27 ]
- >>898
おまい、100回くらい死ねよ
- 901 名前:ウサチャソ mailto:sage [2007/08/02(木) 21:08:52 ]
- バージョンの略を var と書いてしまう奴は結構いるよな。
- 902 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:22:54 ]
- 見たことないぞそんな奴。
- 903 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:25:20 ]
- スペルミスならもっと酷いのをいくらでも見たことがある
- 904 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:41:27 ]
- ここで伝説のuwariteが登場。
- 905 名前:numbar warota mailto:KKC並みのヴァカだな sage [2007/08/02(木) 22:07:37 ]
- >>898
シェルスクリプトごときで1日も迷うねーよ。 それと、From:見る癖つけたほうが良い。
- 906 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 00:34:20 ]
-
「対話的な利用についての話はスレ違い」ってあるけど、 どこに逝っていいのか教えて頂けないでしょうか〜 expect があることは知ってるけど、 インストールが必要だからダメだって。 とりあえず、どういう選択肢があるか知りたいです。 あと perl の話になるんだけど、 Expect.pm を Makefile.pl とか CPAN での インストールをしないで(起動ディレクトリにモジュールを置くだけとかで) 起動する方法があれば、誘導をお願いしたいです。
- 907 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 00:37:46 ]
- >>906
ポエムは確か別の板があったはずだぞ。
- 908 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 01:12:06 ]
- >>907
ポエム? なんかアフォ扱いみたいな感じだけど、 変なこと書いてるんかなー? よく分からん。 とりあえず反応ありがと。
- 909 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 02:14:06 ]
- >906 は対話的の意味を勘違いしているに一票
- 910 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 02:17:29 ]
- >>906
インストールがダメって言うなら、現行環境に入ってる使えそうな道具立てはなんなのよ? それとは別に、「対話利用についての話題禁止」の意味をつかめてないに一票
- 911 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 08:19:15 ]
- >>909,910
ぐぐってみた。↓に書いてある「対話」? (例えばどんな話が禁止なのかは分からんが。。) 0からのbash 第1回:対話的シェルの使用法(1) 1.はじめに www.stackasterisk.jp/tech/systemManagement/bash01_01.jsp >>910 何を書けばいいんだろ。 telnet, ftp, rsh, perl Expect.pm は上に書いたように Windows での単体 exe みたいなイメージ (インストールが必要ない)ならおkらしい
- 912 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 08:56:32 ]
- で、結局何をしたいのよ?
- 913 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 10:30:08 ]
- >911
やりたいことをできるだけ具体的に
- 914 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 17:58:16 ]
- 今度、会社で、シェルを使わなければならない可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ました。
とりあえず初心者がシェルの方を始めるには、どのシェルの方から始めればいいでしょうか? 開発ツールの方とか、デバッガーの方はGUIの方であるんでしょうか? できればフリーの方を希望します。
- 915 名前:名無しさん@お腹いっぱい。 [2007/08/03(金) 18:11:06 ]
- >>914
> 可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ました。 それぞれ20%と仮定すると、4段階あるから、0.16%だ。 悲観的すぎー
- 916 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 18:17:25 ]
- どれがいいかは会社に聞け。
GUI はないと思っていい。
- 917 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 18:18:59 ]
- まず日本語を勉強したほうがいいと思われ
- 918 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 22:35:37 ]
- >>914
sh
- 919 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:10:59 ]
- 面白いと思ってやってるんだろうか? 低脳としか比喩できない釣りだ。
- 920 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:39:16 ]
- >>906
push(@INC, '/home/hiroyuki') とかやればモヂュールのサーチパスに追加されるんじゃないの?
- 921 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:40:37 ]
- >>919
お前の語彙が少ないのはどうでも良い。
- 922 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:48:38 ]
- >>916
wishとかwkshとかPowerShellかもしれないじゃないか!
- 923 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 00:37:18 ]
- >>921
悔しいのか? でもつまらんものはつまらん。
- 924 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 00:41:13 ]
- おや、>>914 が餌をまいているのに、
「シェルってゆーな」の人が登場する可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ませんねぇ
- 925 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 02:19:39 ]
- シェルってゆーな
- 926 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 07:31:21 ]
- >>915
X 恐れ ◯ 虞れ
- 927 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 09:22:51 ]
- >>926
それを言うなら、送り仮名が違う ×虞れ ○虞 ただし、「虞」は常用漢字じゃなく、現在では「恐れ」と表記するのが標準。 ぐぐってみても、「○○する恐れ」は多数ヒットするが、「○○する虞」はごくわずか。
- 928 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 09:34:48 ]
- >>924
お前、センスが皆無な上に致命的に頭悪いな。 > シェルスクリプトをシェルとゆうな。 なので、>>914は(呆れるほどつまらない釣りだが)誤用無し。
- 929 名前:926 mailto:sage [2007/08/04(土) 14:34:15 ]
- >>927
うちのAnthyはそこまでバカじゃない。 送り仮名は「敢えて」俺が書き足した物。 >>ぐぐってみても、「○○する恐れ」は多数ヒットするが、 >>「○○する虞」はごくわずか。 世の中全体が、バカになって来たということですな。 (負の)probabilityをterribleと表記することの とんでもなさに違和感を感じないとはねぇ・・・
- 930 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 14:39:54 ]
- >>929
英語でも I'm afraid ... って言うじゃん。 単に可能性だけじゃなく、もしそうだったら困ると言うニュアンスがあるから 「恐れ」で的確。 いいことに対しては確率が低くても「恐れ」とは言わないし。 ちなみに、probabilityは 0 <= probability <= 1 でしか定義できない。 負のprobabilityなんて言ってる時点で、お前数学も苦手だっただろw
- 931 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 15:26:14 ]
- 悪い事象の発生するおそれって意味じゃないの。
930はprobability=(数学的)確率というバカの一つ憶えしかしてないから 早合点したんだろう。蓋然性って日本語知ってるか?
- 932 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 15:40:52 ]
- >>931
確率を蓋然性と言い替えたところで本質は変わらない。 (数学以外でも)「負の確率」なんて存在しない。 「負の確率」という言葉が出てしまった時点で、アンタの負け。
- 933 名前:931 mailto:sage [2007/08/04(土) 16:15:22 ]
- てんで指摘を理解してないな。俺は929じゃないし。
日本語も英語もダメな人みたいだね。
- 934 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:18:28 ]
- もし「悪い事象が起きる確率」のことを「負の確率」と言ったのなら、
それは数学だけじゃなく日本語としてもおかしい。 確率を理解していないことになる。 よって、>>931 のように弁護しても、やはり >>929 は間違い。
- 935 名前:931 mailto:sage [2007/08/04(土) 16:21:39 ]
- やっぱり理解してないなw
- 936 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:22:41 ]
- >>934は負の遺産とか負の感情とかいう言葉も使わないんだろうな。
- 937 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:37:03 ]
- >>936
負の遺産は本当に「負」だろうが。 借金はマイナスの遺産。マイナスだからこそ「負」と言って正しい。 ところが、確率は絶対に「負」にはならない。 負の確率なんて存在しない。
- 938 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:45:18 ]
- 新聞でも、「…する恐れ」って書いてるよ。
>>936 は別の意味で「負」を理解してないなw
- 939 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:08:59 ]
- 937は借金のことを負の遺産というと思ってるのか。
- 940 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:17:16 ]
- >>939
借金が負の遺産として一番わかりやすい例ということだろ。 いずれにしても負の遺産はマイナスのものに違いない。 で、「負の遺産」を持ち出しても、「負の確率」を正当化することはできない、 という点は理解してますか?
- 941 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:20:47 ]
- じゃあ負の感情についても論破してみて。
- 942 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:28:35 ]
- >>941
好感度を数値化できるものとする。 平常心での好感度は0で、何かに好感を持った時プラスの好感度になる。 逆に嫌悪感を持てば、マイナスの好感度になる。 マイナスの好感度は「負の感情」と言ってもいい。 だから「負」で正しい。 (だから「負の確率」を肯定する材料にはならない)
- 943 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 18:37:06 ]
- >>942
別の高尚なスレッドでやってください。
- 944 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 19:36:54 ]
- そうだな。
どうせ表現するならエロでやってくれなきゃわからん。
- 945 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 21:33:50 ]
- 漢和辞典ひいてみると、虞の項目には「可能性」という文字はないが、恐れには「可能性」と書いてある。
どちらの項目にも「心配する」の意味はある。 広辞苑でも、恐れのほうが虞より先に載っている。 probabilityは見こみで考えたらいいじゃないかな。
- 946 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 21:54:59 ]
- >>945
邪魔だと言っている。 意味が分からないならお得意の広辞苑を引いてくれ。
- 947 名前:名無しさん@お腹いっぱい。 [2007/08/05(日) 18:41:23 ]
- エアコンの室外機が壊れたんですが
お金がないのです どうしたらいいでしょうか?
- 948 名前:926 mailto:sage [2007/08/05(日) 18:59:36 ]
- >>930-945
夜勤明けに遊びに行って、帰ってきたらば この有様w 板違いだけど感受性がおもしろすぎて、嬉しくなるねぇ。 ちなみに(負の)probabilityってのは、 negativeな蓋然性の意味で用いた訳だが・・ あ、あと「マイナスの確率」ってのも 概念的には存在しうるね。 (数学ではなく統計学になるけど 日本語として間違いでは無いよね) 虚数よりは遥に理解しやすい。
- 949 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/05(日) 19:53:10 ]
- >>948
土曜に夜勤か。ご苦労さん。 俺は優雅な休日だった。
- 950 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/05(日) 23:00:59 ]
- >>948
符号付(確率)測度なんて、数学では大して珍しくも無い概念だが…?
- 951 名前:名無しさん@お腹いっぱい。 [2007/08/06(月) 07:38:00 ]
- ハッシュ汽盆!!
- 952 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 16:33:27 ]
- 自己顕示欲の固まりが集まるスレはここでつか?
- 953 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 20:18:07 ]
- その確立200%
- 954 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 20:23:11 ]
- まあ、おれは例外だけどなw
- 955 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 21:15:58 ]
- >>953
×確立 ○確率 国語苦手かよw
- 956 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/07(火) 00:56:36 ]
- 200%も突っ込みどころだろw
- 957 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 03:18:10 ]
- すみません。
シェルスクリプトというかコマンド一発で デバイス(eth0とかeth1とか)を出力することってできますか? もしよかったらコマンド一発でおしえてください。お願いします。
- 958 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 03:57:05 ]
- くだ質へいきなさい。
- 959 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 09:44:57 ]
- Linuxの話ならこっちな。
くだらねえ質問はここに書き込め! Part 150 pc11.2ch.net/test/read.cgi/linux/1185111932/
- 960 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 09:52:29 ]
- すみません。
シェルスクリプトというかコマンド一発で デバイス(fxp0とかde1とか)を出力することってできますか? もしよかったらコマンド一発でおしえてください。お願いします。
- 961 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:04:34 ]
- つまんね。
- 962 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:26:35 ]
- >>960
まずはいっぱつやらせろ。話はそれからだ。
- 963 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:50:43 ]
- アッーーーーーー!
- 964 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 16:53:39 ]
- ふむ
analyzeってことか
- 965 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 17:40:37 ]
- くそつまんねえネタはやめろ
- 966 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 18:08:48 ]
- ふむ
お通じ快適ってことか
- 967 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 21:00:51 ]
- くそスレ化するかどうかのふんばり時だな
- 968 名前:名無しさん@お腹いっぱい。 [2007/08/09(木) 21:06:16 ]
- CentOS Linux on Xen
tcsh 6.13.00 たまになんだけど、 cd dir ls | echo 1 ls | echo 1 ; echo ってやったあとに ls って打つとtcshが固まるのは何故?? バージョンあげれですかそうですか。
- 969 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 21:10:05 ]
- >>968
それはXenとかCentOSにフィードバックしてあげれば? スレ違いとか板違いっぽいけど
- 970 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 21:10:47 ]
- >>968
くそスレ化のための燃料ですか?
- 971 名前:名無しさん@お腹いっぱい。 [2007/08/09(木) 21:12:46 ]
- >969
はえーなw そうするわ<フィードバック 再現できた。 ls | echo 1^C ls
- 972 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 10:31:14 ]
- aシェルの中でbコマンドをバックグラウンドで実行した場合、
bはまだ実行中だけど、aが終了したときにbにシグナルを送って強制的に終了することってできますか?
- 973 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 11:10:07 ]
- >>972
trap "kill $pid;kill -0 $pid && { sleep 1;kill -9 $pid; }; :" EXIT
- 974 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 11:33:26 ]
- >>973
trap: Illegal number: EXIT
- 975 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:18:19 ]
- >>974
trap "kill $pid;kill -0 $pid && { sleep 1;kill -9 $pid; }; :" 0
- 976 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:26:23 ]
- スクリプトで排他制御をする手っ取り早く確実な方法は何でしょうか?
セマフォ使えればいいんだけど、そんなコマンドないもんね・・・
- 977 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:38:33 ]
- >>973
ありがとうございます。 ちなみにSIGKILLはどうしようもないですよね・・・
- 978 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:41:55 ]
- 子の側でときどき親が生きてるか確認する、とか。
- 979 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:47:20 ]
- >>976
FreeBSDには LOCKF(1) FreeBSD General Commands Manual LOCKF(1) NAME lockf -- execute a command while holding a file lock がある。
- 980 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 23:17:10 ]
- >976
lockf は簡単だけど無ければ mkdir を使うんじゃね?
- 981 名前:名無しさん@お腹いっぱい。 [2007/08/11(土) 19:03:37 ]
- ksh93での質問です。
typeset -A で連想配列を使用したいんですが、ksh93でKey値の一覧を取得する方法ってあるんでしょうか? (Perlでいうとkeys関数みたいな感じで)
- 982 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 20:05:44 ]
- ksh93をつかっているUnixってあるんだな。
- 983 名前:名無しさん@お腹いっぱい。 [2007/08/11(土) 21:25:48 ]
- >>982
ソースが公開されてんのって、ksh93だから、LinuxやFreeBSDとかでもpdksh以外のkshを使おうとすると、ksh93になるよね。 逆にksh88的に使いたいならpdkshになるんだけど、pdkshはpdkshでksh88とは振る舞いが結構違うのでいたいところがあるね。 商用系のUnixだと、AIXは/bin/ksh93がksh93、/bin/kshはksh88。HP-UXやSolarisはどうなんだろ?一応、ksh93は存在するみたいだけど・・・
- 984 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 22:08:09 ]
- HP-UX11iv1とSolaris8/9/10はksh88しかない。
- 985 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 23:31:11 ]
- posix-sh をつかうとか
|

|