|
環境変数にセットする値をConfigFileから読み込む仕様のシェルがあります。 しかし今その環境変数の値にスペースがある場合にうまく動きません。 具体的には configFile内に T_DATE=`date +'%Y%m%d%H%M%S'` と記述して実際のBシェルの中で for var in `cat ${CONFIG}` do export $var done としています。 想定としては export T_DATE=`date +'%Y%m%d%H%M%S'` となってほしいのですが 実際には export T_DATE=`date export +'%Y%m%d%H%M%S'`=+'%Y%m%d%H%M%S'` という2つの変数として扱われてしまいます。 これを回避する方法はありませんでしょうか。 使用している環境はHP-UX B.11.11 です。 |
|
>>4014 どんぐ while read line; do eval $line done < ${CONFIG} てな感じでどうでしょうか。 |
|
Vacancies in SUN China In 1982 Sun Microsystems created a business vision named “The Network is the Computer”. In the same year Sun initiated R&D on Java Technology. Today Sun is recognized by all as the Premier Network Enterprise Computing Vendor and have a global presence in over 100 countries. In 1987, Sun entered China market and has been dedicated to the technology and customer solution development in China. Customer Solution Center in Beijing expand repidly to provide technical hot line suppot to mission critical customers. We invite top nortch engineers to join our champion team in Beijing to provide world-class customer services. Solution Center Engineer (GC0201938) (53 Vacancies) UNIX generalist responsible for providing system support that includes hardware, software, software applications, and networking to customers via telephone support. Incumbent must be university graduate in Computer Science / Electronic Engineering, knowledgable in O/S like Unix, Linux or Solaris systems, fluent in written and spoken Japanese and with minimum 3 years of Unix Sever Support, System Integration or internal MIS support of Unix Sever. Solution Center Manager (GC0201941) (2 Vacancies) Manages and directs the activities of the Solution Center teams to provide customer facing technical post sales support of both hardware and software issues. Accountable for meeting operational excellence, customer satisfaction and people management goals of Solution Center. Liaise closely with the product technical support group for technical escalation as well as the local field operations. Incumbent must be Universtiy graduate in Computer Science / Electronics Engineering, 10 years customer support experience with 5 years in managerial capacity and fluent in written and spoken Japanese, good English is a plus. To apply this position, Please send your resume in English, Mandarin or Japanese and marked with position code to Lisa.wu@multimage.com.cn. Contact: Tel: +86 10-65057881-17 Lisa 84580901-17 Lisa Mob: 13501160969 Fax: +86 10-65057880/84583069 |
|
duコマンドで、ディスクの使用率をバイトで表示しようと以下の コマンドを実施したのですが、サイズとディレクトリ名との間に 改行が入り、一行で表示できません。 サイズとディレクトリ名を一行で表示し、その後、改行したいの ですがどうすればよいですか。 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 ↓ 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 としたいのですが。 du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' |
|
>>4017 さいさん > du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' 改行コードが余分なわけなので du -k | sort -nr | awk '{ system("echo "$1"*1024 | bc | tr -d \\\\n"); printf(" %s\n", $2) }' du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' とか。 わたしなら「わかりづらい」「無駄なプロセス生成が嫌」という理由から、 du -k | sort -nr | awk '{ printf("%6d %s\n",$1*1024,$2)}' などとします。 |
|
>>4018 68user >du -k | sort -nr | awk '{ printf("%10d %s\n",$1*1024,$2)}' と最初はやっていたのですが、$1に設定されるブロックサイズが大きい と「$1*1024」でオーバーフローを起こし、正しい計算ができないので systemで、bcで計算をするようなことに |
|
>>4017 さいさん >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' サーバとかOSのバーションとか記述されてませんでしたけど、 「echo -n」は、依存しませんでしたか。 |
|
>>4107 68user >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' shかcshで異なるみたいです。 バークレイ版では、「\c」 エスケープを「-n」オプションで代用することができます。 echo が csh(1) の組み込み関数として用いられている場合には、バークレイ方式に 従っています。 #du -k $1 | sort -nr | awk '{ system("echo `echo "$1"*1024 | bc` \\\\c"); printf(" %s\n", $2) }' で、できました。 |
|
こんにちは kenといいます。 Winsockを使ってネットワークの勉強してまして大変勉強になりました。 ソケットプログラミングを進めていくうちにどうしてもわからない点が発生 したので、もしよろしければとおもいメールしました。 問題はSend()/Recv()でパケットサイズを超えるデータを連続で 送受信させたいのです。 パケットを超える送信をするにはsend()の引数にバッファ、サイズを そのままのっければ、自動でパケットサイズに切り分けて送信してる のを確認しました。ですが、受信終了を示す返り値のlengs=0を受信 できませんでした。どうも送ってないようです。httpサーバーに接続して 受信をためしたのですが、lengs=0を確認でき連続で受信することができました。 recv()での受信lengs:0はシャットダウンを意味するとの記述も見つけたのですが、 shutdown()では送信復帰ができないので、使えません。 パケットサイズを超えるデータを連続で送信し受信する時、 受信データの終了を送信したり、受信するにはどうすればいいので しょうか? サーバーがファイルの終了を示すleng=0を送信するのは なにか命令があるのでしょうか? ソケットをシャットダウンするとleng=0を送信できますが シャットダウンを復帰できないはずですがしてるのでしょうか? よかったらレスお願いしますm(__)m page:homepage3.nifty.com/MIDI-EDITOR/ mail:NQD00781@nifty.com ken |
|
>>4022 ken TCP ですか? それとも UDP ですか? > パケットサイズを超えるデータ パケットサイズって具体的に何のことを指していますか? > 受信終了を示す返り値のlengs=0を受信できませんでした。 送信側で close か shutdown しましたか? > shutdown()では送信復帰ができないので、使えません。 送信復帰って何ですか? |
|
sedを使用して先頭1行目のみ置換を行い、 すべてを出力させたいのですが、どうすれば よいですか。 sed 's/o=test$/o=honban/g' とすると置換は行われますが、先頭1行目のみ だけしたいのです。 CM1: id=00001,nm=test,o=aaa,o=test CM2: mod CM3: option - CM4: ftp CM5: get ↓ CM1: id=00001,nm=test,o=aaa,o=honban CM2: mod CM3: option - CM4: ftp CM5: get |
|
>TCP ですか? それとも UDP ですか? TCPです。 >> パケットサイズを超えるデータ >パケットサイズって具体的に何のことを指していますか? send()/recv()での送信、受信レングスです。 この場合では、Recv時のレングスです。 >> 受信終了を示す返り値のlengs=0を受信できませんでした。 >送信側で close か shutdown しましたか? サーバー側でデータを送信し、終了したらshutdown/closeを行うべき なのでしょうか? 確かにレングス0を受信できますが、その後に 送受信を必要な場合はどうすればいいのでしょうか? httpサーバーにアクセスした時はレングス0が帰ってきたのですが、 shutdownしていたのでしょうか? >> shutdown()では送信復帰ができないので、使えません。 >送信復帰って何ですか? 送信の終了を示す、レングス0を送るためにclose/shutdownを使うと、 その後にアクセスができなくなる。 shutodownしたソケットを再使用は危険とMSDNにでてます。 |
|
>>4024 どっかん sed -e '1s/o=test$/o=honban/' |
|
>>4025 ken 要は、ピアが送信したデータが全部届いたことを確認したいのですか? それならば、TCP/IP のレベルではなくアプリケーションのプロトコル レベルで実現するのが普通です。 例: - 送信側は「データ長 + データ」を送信。受信側は最初に受け取った データ長の分だけデータを受信したら、全データ到着とみなす。 - 改行コードをプロトコルのひとまとまりとみなす。送信側は データの末尾に改行コードをつけて送信。受信側は改行コードを 受け取ったら全データ受信とみなす。 端的に言うと、 recv の戻り値が 0 = FIN が届いたとき です (ノンブロッキングモードなどの例外はあるかと思いますが)。 で、FIN を投げるには close か shutdown する必要があるということです。 |