ある数値をパイプで受け取ったとして、それの合計値を出したいときには
どうするのがいいんでしょうか??
>>877 ありがとうございます。これでなんで上手くいくのか分りませんがとにかくそういうもんだと思っておきます。
>>872 シェルによって違う。
bourneとbashはパイプからだとサブシェルになる。
kornとzshはパイプからでもサブシェルにならない。
880 :
名無しさん@お腹いっぱい。:2005/08/08(月) 23:29:21
当方kshを利用しているのですが、whileループを使用して2ファイルを
読み込む処理がうまく行きません。
外側のループが処理されずに抜けてしまいます。
(個人的な推測では内側のループで外側のカーソルも移動している気がします)
どなたか、対処の方法を教えてくだされ。
ソースはこんな感じです。
function funcA
{
while read LINEB
do
処理あれこれ
done <$LINEB
}
while read LINE
do
funcA
done <$FILEA
$LINEBじは$FILEBの間違いって落ちじゃないよな。
883 :
880:2005/08/08(月) 23:42:58
>>881さん
もうちょっと、ヒントをください。
>>882さん
先ほどのソースは間違ってますが、現実は「FILEB」です。
ご指摘ありがとうございます。
1 #!/bin/ksh
2 FILEB=$0
3 CNT=0
4 function funcA
5 {
6 while read LINEB
7 do
8 echo $LINEB
9 done <$1
10 }
11 while read LINE
12 do
13 echo ------$CNT------
14 funcA $FILEB
15 CNT=`expr $CNT + 1`
16 done <$0
この例だと、同じファイルを読み込んでるけど、ちゃんと動くがなぁ。
885 :
880:2005/08/09(火) 00:34:04
>>884さん
ほ、本当ですか?
自宅にはUNIX環境がないため、確かめることはできないのですが…
なんでだろうか。。
起動したプロセスのプロセスIDをpidファイルに書き込みたいんですが、
どうすればいいでしょうか?
>>886 echo $$ > pid
念のため言っておくけど、複数個起動すれば当然"pid"というファイルの
内容は書き直されちゃうからね。
>>887 あざーっす!
参考になります。
ところで、やはりスクリプト内で別のスクリプトを読んでいる場合は
実プロセスIDではなくてスクリプトを実行しているプロセスのIDになってしまいますよね・・
889 :
名無しさん@お腹いっぱい。:2005/08/09(火) 07:19:22
>>888 スクリプトを実行してるプロセスのIDになりました。
apacheとかはどうやって取得しているんでしょうか・・・
バックグラウンドで起動した子プロセスのPIDなら「$!」
>>890 あざーーっす!!!!
取れました!
1 #!/bin/sh
2
3 echo $$
4 ./test.sh &
5 echo $!
という超簡単なものなら行けたんですが・・・・・
実はtomcatの自動起動スクリプトを書いているんですが、
ソース晒して見てもらってもいいでしょうか?
> あざーーっす!!!!
ってなんだよ?
オヅラさんの挨拶は「おあざーっす」
「ありがとうございます」の発音の弱勢部分を崩したんじゃない?
当たってたら、なんかくれ。
意味不明。
日本語を書くこと。
いあいあとかふんぐるいとかあざーすとか。
うがなぐるふたぐんとか
いあいあはすたー
sedやawkの使い方知らないから、いつもPerlに頼っちゃうんだけど、
こういうのあんまりよくない?
どうでもいいよおもうよ
>>891 自己レスです。
結局
echo $(ps -ewo "%p %c %u %a" | awk "\$2==\"java\" && /catalina/ && \$3==\"$CATALINA_USER\" {print \$1}" | head -n 1) > $CATALINA_PID
こんな強引なやり方でプロセスID取得しました
そんなことするより、起動スクリプトで echo $$ > pidfile したあと exec すれば?
fifo つくって通信するとか
>>902 Tomcatが8080で待ちうけている場合
/usr/sbin/lsof -t -i TCP:8080 -P
シェルスクリプトじゃないけどね。
>>905 ええー、(環境によっては)lsofをわざわざインスコすんの…。
そりゃあ必要なものは何でもインスコしなきゃならんがの。プロセスidさえ
わかればよいという目的下だと、ちょっとバランスの悪さを感じる。(俺は)
907 :
名無しさん@お腹いっぱい。:2005/08/10(水) 23:15:45
スミマセン、教えてください。
Kシェルで
count=`cat a.txt b.txt | grep ${検索条件} | wc -l`
というコマンドで検索条件に半角スペースを含む文字列を指定したい場合、どうしたら良いですか?
count=`cat a.txt b.txt | grep "${検索条件}" | wc -l`
これじゃあかんの?
909 :
907:2005/08/10(水) 23:39:59
>>908 それだと、なぜかcount=0になっちゃうんですよ。
もちろん、条件には引っ掛かる文字列もあります。
うーん。
>>908 ksh使ってないんで本題はわからんが、grep -c って標準的じゃないの?
スペースの話を別にすれば
count=`grep -c $検索条件 a.txt b.txt`
でよかったんじゃないのかな。
本題も、wc -lを取り払って試せば、なぜなんだかわからないかな。
grep -c -F でどうだろう?
>もちろん、条件には引っ掛かる文字列もあります。
というところからして、検索文字列の正規表現が
おかしくてマッチしないだけというオチじゃなかろうか。
grep を fgrep に変えてみるとか。
913 :
907:2005/08/11(木) 20:04:46
自己解決しました。
検索条件はファイルから読み込んでいるので、
半角スペースに見えているのは特殊文字かと思い、
cat -vしてみたら
行末に^Mの文字が‥
引っ掛からないわけでした。
やさしいunix板の皆様、ありがとうございました。
逝ってきます。
914 :
名無しさん@お腹いっぱい。:2005/08/14(日) 08:45:19
csh使いのアホはいつになったら死滅するんでしょうか?
BSDがあるかぎり何度でも甦るさ
*BSDに関して一つだけ嫌いな点はデフォルトのログインシェルがcshって事だな。
NetBSDにstaticな/bin/bashを突っ込む俺も阿呆だと思うけど。
だってシングルユーザモードでもログインシェルにbashを使いたいんだよもん!
tcshとかもいらない
私も要らないんだけど、入ってないと年寄りが。。。
私はbashかksh。
919 :
名無しさん@お腹いっぱい。:2005/08/14(日) 18:51:36
zsh
ログインシェルの話はどこかよそでやっておくれやす
出た自治厨
シェルスクリプトを走らせると
????.sh: xrealloc: cannot reallocate 268435456 bytes (0 bytes allocated)
(????はファイル名)
というエラーがでます。
前同じスクリプトを動かしても何も普通に動いていたのに。。。
パーミッション、ファイルサイズ制限、ログインシェル、メモリ残量
はチェック済みです。。。
このエラーが起きる原因はなんでしょうか?
よろしくお願いします。
924 :
923:2005/08/22(月) 18:14:30
解決できました。すみません(;´ω`)