68user's page 掲示板

Prev< No. 3459〜3464> Next  [最新発言に戻る] [過去ログ一覧]
No. 3459 # Hide 2003/12/10 (水) 18:51:59
一般的な関数でないのでしょうか?
RST送信するんですが・・

No. 3460 # 68user 2003/12/10 (水) 19:21:15
>>3459 Hide
わたしは初めて聞きました。

No. 3461 # だん 2003/12/11 (木) 00:30:36
Bシェルなのですが、tarで標準出力した結果をteeでファイルに出力し
なおかつ、tarの正常、異常を判断したいのですが、どうすればよい
のですか。
tar -cvf /dev/rmt/0m * 2>&1 | tee -a kekka.txt
と行ったのですが、標準出力及びkekka.txtに出力されたのですが、
$?の値が常に「0」の状態です。
標準出力、ファイルへの出力、$?の判定を行えるよにするにはどう
すればよいのですか。

No. 3462 # 68user 2003/12/11 (木) 09:36:55
>>3461 だん
ちゃんとステータスコードを取れるみたいですよ。
    % true | tee -a kekka.txt; echo $?
    0
    % false | tee -a kekka.txt; echo $?
    255

と思ったら、取れるのは csh・tcsh だけで sh (Solaris2.6)・bash は
無理みたいですね。

sh では
    % true && succeed=OK
    % echo $succeed
    % false || succeed=NG
    % echo $succeed

    % true && echo OK | tee -a kekka.txt
    % false || echo NG | tee -a kekka.txt
はいけるのに、
    % true && succeed=OK | tee -a kekka.txt
    % echo $succeed
    % false || succeed=NG | tee -a kekka.txt
    % echo $succeed
は $succeed に値が入らない。なんでだろう。
# サブシェルで実行されるから?

というわけで、Solaris2.6 の sh では
    % (true; echo $? >result) | tee -a kekka.txt
    % cat result
    % (false; echo $? >result) | tee -a kekka.txt
    % cat result
とステータスコードをファイルに保存するというかっこ悪い方法で
実現できました。より美しいやり方を募集中です。

No. 3463 # has 2003/12/12 (金) 01:36:49
>>3462 68user
俺には美しいやり方なんて無理ですが、ファイルじゃないだけなら
% ( true ; rc = $? ) | tee > kekka.txt
てのは?;-)

No. 3464 # has 2003/12/12 (金) 01:43:19
>>3463 has
ああ、すみません、3462をよく読んでませんでした。
68userの言う、&&とか||の処理詳細と(;)の違いは良く知らないんですが、
redhat 9.0のshでは3463のやり方ができたもので。
一応ご報告まで。

Prev< No. 3459〜3464> Next  [最新発言に戻る] [過去ログ一覧]