The UNIX and Linux Forums  


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



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

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
変数のスコープ。 dinjo_jo シェルプログラミングとスクリプティング 13 2008年9月10日 08:03午前
AIXの範囲の abhishek27 AIX 4 2008年6月19日 10:49午前
変数名を別の変数の値に基づいて作成 benefactr シェルプログラミングとスクリプティング 2 2007年11月1日 12:27午後
方法ではない場合は、番号、または1つの変数の値evaulateか suman_jakkula シェルプログラミングとスクリプティング 1 2007年4月20日 02:06午前
領域 sundaresh 高レベルのプログラミング 7 2006年6月28日 12:19午後

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

参加日: 2009年1月
投稿: 12
シェル変数のスコープの問題

やあ、
サブシェルを開発しながら私は午前立ち往生ルーチンは"成功"または"失敗"のログファイルをチェックします。場合は、その変数( \u003d 1が設定)が見つかりましたサブルーチン"成功"は、ログファイルをチェックする重要な単語を読み取ります。また、この変数に基づいて成功または失敗を返します。

私の問題は、私は変数を参照することができますを1 (成功シナリオ)が設定されて一度は、 whileループの外の値が0にリセットされていますされています。
ここでは私のlogCheck機能を、私は私は間違っていることをお知らせしてください。

機能logCheck

\u003d 0が見つかりました; # 1に設定しますが、 "成功"が検出さ

猫$ ( OUTPUT_LOG ) |
一方ラインを読む
する
気温\u003d ` $エコーライン|はgrep " $ ( SUCCESS_MESSAGE ) " `
もし[ $ ? -式0 ] ;し
\u003d 1が見つかりました < -値を1はこちら
"発見は、 "文字列のエコー
中です"の中に値がエコー: $ "を発見
Fiの
完了した

" $いる間は外の値が検出エコー"を発見 < -が0のすべての場合に備えて
もし[ $ \u003d 1 ]が見つかりました。し
サクセス$を返す;
その他の
$ FAILUREを返す
Fiの



/ /成功シナリオの出力:
文字列が検出さ
whileループ内の実測値: 1
実測値外のwhileループは0です
  #2固定リンク)  
Old 2009年1月3日
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
シェルプログラマは、著者
  
 

参加日: 2007年3月
場所:トロント、カナダ
投稿数: 2361
引用:
当初の投稿 cjjoy View Post
やあ、
私の問題は、私は変数を参照することができますを1 (成功シナリオ)が設定されて一度は、 whileループの外の値が0にリセットされていますされています。

すべての殻を除いては kshは、パイプラインのすべてのセグメントsubshellsで実行されています。
引用:
ここでは私のlogCheck機能を、私は私は間違っていることをお知らせしてください。

内部コードを追加してください[コード]タグ。
引用:
コード:
function logCheck

関数を定義するための標準的な構文です:


コード:
logCheck()

引用:
コード:
{
found=0; #sets to 1 if "success" is found

     cat ${OUTPUT_LOG} |

UUOC 。
引用:
コード:
     while read line
      do
           temp=`echo $line|grep "${SUCCESS_MESSAGE}"`

UUOG 。

ではなく、外部のコマンドは、 case文を使用します:


コード:
case $line in
     *"${SUCCESS_MESSAGE}"*) found=1
               echo "string is found"
esac

引用:
もし[ $ ? -式0 ] ;し
\u003d 1が見つかりました < -値を1はこちら
"発見は、 "文字列のエコー
中です"の中に値がエコー: $ "を発見
Fiの
完了した

" $いる間は外の値が検出エコー"を発見 < -が0のすべての場合に備えて
もし[ $ \u003d 1 ]が見つかりました。し
サクセス$を返す;
その他の
$ FAILUREを返す
Fiの



/ /成功シナリオの出力:
文字列が検出さ
whileループ内の実測値: 1
実測値外のwhileループは0です

編集cfajohnsonで最終; 2009年1月4日に 05:46午後..
  #3固定リンク)  
Old 2009年1月4日
cjjoy cjjoy is offline
登録ユーザー
  
 

参加日: 2009年1月
投稿: 12
どうもありがとうジョンソン..罰金とその作業は現在、変化が織り込まれている...
Closed Thread

ブックマーク

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

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

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

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




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


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

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