2015-12-10 65 views
0

嗨,我剛剛開始做一些csh腳本,並且一直在將grep結果存儲到變量時遇到問題。我試圖從包含用戶名的文件中保存一行作爲子字符串。在csh中保存grep輸出

echo `grep -w $name /etc/passwd` 
set line=`grep -w $name /etc/passwd` 
echo $line 

第一行只是一個調試行,所以我知道我的grep正在獲取正確的行。它的第二行是給我的問題。當我回應它時,它會打印出「回聲:不匹配」。任何人有任何幫助提供?

回答

1

您的passwd文件包含*。雙引號添加到您的腳本:

set line="`grep -w $name /etc/passwd`" 
echo "$line" 

不帶引號的*被解釋爲一個通配符文件匹配字符[可能]將不會匹配任何真正的文件。

+0

就是這樣,非常感謝。 –

+1

你很受歡迎。如今,我在perl中編寫了99.44%的腳本。但是,在此之前,我獨家使用了csh [並且它是_still_我的登錄shell]。很高興看到一些人仍然使用csh –

+0

set line = $(grep -w $ name/etc/passwd)更好,因爲它更具可讀性,並且允許嵌套命令。 'cmnd1'cmd2''在第二個反引號處結束。 –