2016-04-09 50 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 

輸出爲:

Ugli 1   pid 28410 : 625060  00:46  86 

所以腳本greptest應打印1.但它打印0

現在如果我命令出去:

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

輸出正確。/opt/apps/algo/alcr5/TOP/shrc是一個腳本,定義了一些變量和函數。

採購shrc文件時沒有錯誤提示。它會對美元產生什麼影響?下一個命令的值?

+0

結果('$?'爲0)對我來說是正確的;我認爲grep模式並沒有做到你認爲的那樣。 'grep'\ * \ *''將匹配任何*行,因爲正則表達式'/ *'將匹配零個或多個斜槓,並且任何行都將包含兩個零或更多斜槓的實例。 –

+1

@GordonDavisson:'/ *'會匹配零個或多個斜線,但'\ * \ *'會匹配兩個星號,因爲它們會被轉義。 – cdarke

+0

如果我回顯'grep'中給出的輸出,我會在'$?'中得到一致的結果(作爲子進程或源代碼)。但是我正在運行'bash',而不是'/ bin/shrc'(不管那是什麼)。你有像'.bashrc'這樣可能會影響它的啓動文件嗎? – cdarke

回答

-2

如果使用bash,則使用#!/bin/bash而不是#!/bin/shrc

+0

這是一個錯字。我使用#!/ bin/bash解釋器。 – AlexL