2014-10-27 138 views
0

我的操作系統平臺是信息:SunOS machinehull01 5.10 Generic_148888-05 SUN4V SPARC SUNW,太陽火-T200從文件執行shell腳本

我寫了一個shell腳本從一個文件運行

文件名:test.sh

#!/bin/sh 
VARNAME=$grep '-l' TestWord /home/hull/xml/text/*.txt 
echo "Found $VARNAME" 

當我運行在我得到沒有錯誤的正確控制檯輸出上面的命令,但是當我運行SH test.sh./test.sh我得到低於錯誤

test.sh: -l: not found 
Found 

有人可以幫助我嗎?

回答

0

明白了。

#!/bin/sh 
VARNAME=`grep -l TestWord /home/hull/xml/text/*.txt` 
echo "Found $VARNAME" 

我只好把那些(`)那裏。

+1

這與'hek2mgl'提供的相同答案(反引號是'$ (...)',並且不應該用於新代碼中)。 – chepner 2014-10-27 15:30:01

+0

是的,但他的解決方案在Solaris中不起作用,但是這樣做。 – user360321 2014-10-31 12:02:15

+0

噢,對,Solaris使用'/ bin/sh'的非POSIX shell(我認爲實際的Bourne shell)。如果可能,您可以考慮切換到Solaris的POSIX shell'/ usr/xpg4/bin/sh'。 – chepner 2014-10-31 12:35:00

3

您正在尋找所謂的「命令替換」:

VARNAME=$(grep -l TestWord /home/hull/xml/text/*.txt) 
echo "Found $VARNAME" 

它會在一個子shell $(和右括號)之間執行命令和命令的輸出返回到VARNAME

+0

我在下面添加括號時出現錯誤test.sh:第2行的語法錯誤:'WEEKLY = $'unexpected – user360321 2014-10-27 09:19:28