2014-10-27 137 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