-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)對我來說是正確的;我認爲grep模式並沒有做到你認爲的那樣。 'grep'\ * \ *''將匹配任何*行,因爲正則表達式'/ *'將匹配零個或多個斜槓,並且任何行都將包含兩個零或更多斜槓的實例。 –
@GordonDavisson:'/ *'會匹配零個或多個斜線,但'\ * \ *'會匹配兩個星號,因爲它們會被轉義。 – cdarke
如果我回顯'grep'中給出的輸出,我會在'$?'中得到一致的結果(作爲子進程或源代碼)。但是我正在運行'bash',而不是'/ bin/shrc'(不管那是什麼)。你有像'.bashrc'這樣可能會影響它的啓動文件嗎? – cdarke