- 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/
- 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回くらい死ねよ
|

|