-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)は私にとっては正しいと思われます。私はgrepパターンがあなたが思っていることをしていないと思います。正規表現 '/ * 'は0個以上のスラッシュにマッチするので、' grep' \ * \ * ''は*任意の行にマッチします。 –
@GordonDavisson: '/ *'は0個以上のスラッシュにマッチしますが、エスケープされているので、 '\ * \ *'は2つのアスタリスクにマッチします。 – cdarke
'grep'に与えられた出力をエコーすると、' $? 'で1の結果(子プロセスまたはソースとして)に一貫した結果が得られます。しかし、私は '/ bin/shrc'(それが何であれ)ではなく' bash'を実行しています。 '.bashrc'のような起動ファイルに何らかの設定がありますか? – cdarke