2016-04-09 3 views
-2

は、私は簡単なスクリプトを持っている:

greptest 
------------ 
#!/bin/bash 
. /opt/apps/algo/alcr5/TOP/shrc 
$RTCE_HOME/bin/utils/serverlist.sh|grep Ugli|grep '\*\*' >/dev/null 2>&1 
echo $? 

$RTCE_HOME/bin/utils/serverlist.sh|grep Ugli 

の出力は次のようになります。印刷する必要がありgreptest

Ugli 1   pid 28410 : 625060  00:46  86 

ので、スクリプトは1が、それは0

を印刷します今私が命令する:

source /opt/apps/algo/alcr5/TOP/shrc 

出力が正しいです。/opt/apps/algo/alcr5/TOP/shrcはいくつかの変数と関数を定義するスクリプトです。

shrcファイルを入手する際にエラーメッセージは表示されません。何が$に影響するのでしょうか?次のコマンドの値?

+0

結果( '$?'が0)は私にとっては正しいと思われます。私はgrepパターンがあなたが思っていることをしていないと思います。正規表現 '/ * 'は0個以上のスラッシュにマッチするので、' grep' \ * \ * ''は*任意の行にマッチします。 –

+1

@GordonDavisson: '/ *'は0個以上のスラッシュにマッチしますが、エスケープされているので、 '\ * \ *'は2つのアスタリスクにマッチします。 – cdarke

+0

'grep'に与えられた出力をエコーすると、' $? 'で1の結果(子プロセスまたはソースとして)に一貫した結果が得られます。しかし、私は '/ bin/shrc'(それが何であれ)ではなく' bash'を実行しています。 '.bashrc'のような起動ファイルに何らかの設定がありますか? – cdarke

答えて

-2

bashを使用する場合は、#!/bin/shrcの代わりに#!/bin/bashを使用してください。

+0

それはタイプミスでした。 #!/ bin/bashインタプリタを使用します。 – AlexL