The UNIX and Linux Forums  


Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
コマンドと終了ステータスの問題に移動 visingha シェルプログラミングとスクリプティング 10 2008年9月13日 09:08午後
コマンドと終了ステータスの問題に移動 visingha UNIXのダミー質問と回答のため 1 2008年9月12日 03:14午前
Unixのシェルで実行するJavaのクラスパスの状態を終了 mmcds 高レベルのプログラミング 2 2007年8月2日 11:06午後
シェルスクリプトの終了ステータスをチェック kdipankar シェルプログラミングとスクリプティング 2 2006年5月9日 02:08午前
問題のステータスで終了 diganta シェルプログラミングとスクリプティング 1 2005年9月28日 09:34午前

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年1月6日
philp philp is offline
登録ユーザー
  
 

参加日: 2009年1月
投稿: 2
shを再帰的にサブシェルの終了ステータスの問題

やあ
私はサブシェルとして実行してこれを再帰的な関数の終了ステータスを検出しようとしている。以下に私が実行して...のファイルは、シェルスクリプトの一部上場が残念はまだ少し息切れ長: -

コード:
#!/bin/sh

addFile()
{
  fileName="${1##*/}"           # Extract filename from path.
  if [ $fileName == "phil" ]
  then
    return 1 #Kick off error...
  else
    return 0
  fi
}

addCommitFiles()
{
  # Traverse to database directory or below
  cd "$topDir/$1"
  if [ $? != 0 ]
  then
    echo "topDir error $topDir/$1"
    exit 1 # Treat as fatal error.
  fi

  # List all files/dirs in this directory.
  ls | while read i
  do
    # Check if directory.
    if [ -d "$i" ]
    then
      # Pass in full relative path to topDir.
      ( addCommitFiles "$1/$i" )
      ret1=$?   # This is never non-zero???
      echo "RET=$ret1 != 1"
      if [ $ret1 != 0 ]
      then
        echo "ERR2???"
        exit 1 # Treat as fatal error.
      fi
      echo "ERR3"
    else
        echo "${rootDir}/$1/${i}"
        addFile "$1/$i"
        if [ $? != 0 ]
        then
          echo "ERR1"
          exit 1 # We get this error and would exoect 
        fi
    fi
  done
  exit 0
}

  # Main
  usrNam="XXX"
  topDir=`pwd`
  rootDir="./"

  (addCommitFiles "./$usrNam")
  if [ $? != 0 ]
  then
    echo "ERROR"
  else
    echo "OK"
  fi
私は自分のローカルディレクトリには、以下のディレクトリ構造を作成している: -
XXXの
ファイルxyzを
ディレクトリ\u003d YYY
ファイル× 1 y1 Z1は
ディレクトリ\u003d寝る
ファイルフィルX2のy2 z2

私は、シェルスクリプトを実行する私は、出力を得る: -
XXXの.//./ / 1
XXXの.//./ / b
XXXの.//./ / ç
.//./ XXX/YYY/x1
.//./ XXX/YYY/y1
.//./ XXX/YYY/z1
XXXの.//./ / YYY /寝る/フィル
ERR1
RET \u003d 0 ! \u003d 1
ERR3
RET \u003d 0 ! \u003d 1
ERR3
[ OK ]を

私は理解することdontなぜ私は" ERR2 ???".を取得しないでください私は1を返しますERR1を得るためaddFileけど、 ERR2を得ることを期待していたか? "を終了し、これは、サブ1で終了します。
私はここに明らかにすることができます場合、誰も感謝すると何か足りないのですか?

ありがとう

philpが編集最終; 2009年1月7日に 05:58午前..理由:追加コードのタグ
 

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 01:14午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0