从文件执行shell脚本
问题描述:
我的操作系统平台是信息: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
有人可以帮助我吗?
答
明白了。
#!/bin/sh
VARNAME=`grep -l TestWord /home/hull/xml/text/*.txt`
echo "Found $VARNAME"
我只好把那些(`)那里。
答
您正在寻找所谓的“命令替换”:
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
这与'hek2mgl'提供的相同答案(反引号是'$ (...)',并且不应该用于新代码中)。 – chepner 2014-10-27 15:30:01
是的,但他的解决方案在Solaris中不起作用,但是这样做。 – user360321 2014-10-31 12:02:15
噢,对,Solaris使用'/ bin/sh'的非POSIX shell(我认为实际的Bourne shell)。如果可能,您可以考虑切换到Solaris的POSIX shell'/ usr/xpg4/bin/sh'。 – chepner 2014-10-31 12:35:00