从文件执行shell脚本

从文件执行shell脚本,shell,sh,sunos,Shell,Sh,Sunos,我的操作系统平台是:SunOS machinehull01 5.10 Generic_148888-05 sun4v sparc SUNW,Sun-Fire-T200 我已经编写了一个从文件运行的shell脚本 文件名:test.sh #!/bin/sh VARNAME=$grep '-l' TestWord /home/hull/xml/text/*.txt echo "Found $VARNAME" 当我在控制台中运行上述命令时,我得到的是正确的输出,没有错误,但当我运行sh test.s

我的操作系统平台是:SunOS machinehull01 5.10 Generic_148888-05 sun4v sparc SUNW,Sun-Fire-T200

我已经编写了一个从文件运行的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

有人能帮我一下吗?

您正在搜索所谓的“命令替换”:


它将在子shell中执行
$(
和右括号
之间的命令,并将命令输出返回到您正在搜索的所谓“命令替换”中的
VARNAME


它将在子shell中执行
$(
和右括号
之间的命令,并将命令输出返回到您正在搜索的所谓“命令替换”中的
VARNAME


它将在子shell中执行
$(
和右括号
之间的命令,并将命令输出返回到您正在搜索的所谓“命令替换”中的
VARNAME

它将在子shell中执行
$(
和右括号
之间的命令,并将命令的输出返回到
VARNAME

#!/bin/sh
VARNAME=`grep -l TestWord /home/hull/xml/text/*.txt`
echo "Found $VARNAME"
我必须把那些(`)放在那里。

明白了

#!/bin/sh
VARNAME=`grep -l TestWord /home/hull/xml/text/*.txt`
echo "Found $VARNAME"
我必须把那些(`)放在那里。

明白了

#!/bin/sh
VARNAME=`grep -l TestWord /home/hull/xml/text/*.txt`
echo "Found $VARNAME"
我必须把那些(`)放在那里。

明白了

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

我不得不把那些(`)这里。

我在第2行加括号时出错了test.sh:语法错误:`WEEKLY=$意外我在第2行加括号时出错了test.sh:语法错误:`WEEKLY=$'意外我在第2行加括号时出错了test.sh:语法错误:`WEEKLY=$'意外我在第2行出错了当我在那里添加括号时出错test.sh:第2行的语法错误:`WEEKLY=$出乎意料这与
hek2mgl
提供的答案相同(backticks是
$(…)
的旧版本,不应在新代码中使用)。是的,但他的解决方案在Solaris中不起作用,但这确实起作用。哦,是的,Solaris使用了非POSIX shell(实际的Burne shell,我想)对于<代码> /bin /SH
。如果可能的话,您可以考虑切换到Solaris的POSIX外壳, /Urr/XPG4/BI/SH 。这是相同的答案:<代码> HEK2MGL提供的(背书是旧版本的<代码> $(…)<代码>,不应用于新代码中)。是的,但是他的解决方案在Solaris中不起作用,但这是正确的。哦,对了,Solaris使用了一个非POSIX外壳(实际的Burne shell,我想)用于<代码> /bin /SH 。如果可能的话,您可以考虑切换到Solaris的POSIX外壳,“代码> /Urr/XPG4/BI/SH 。这是相同的答案,<代码> HEK2MGL提供。(backticks是
$(…)
的旧版本,不应在新代码中使用)。是的,但他的解决方案在Solaris中不起作用,但这确实起作用。哦,对了,Solaris使用的是非POSIX shell(我想是实际的Bourne shell)对于<代码> /bin /s< /code >。如果可能的话,您可以考虑切换到Solaris的POSIX外壳, /XRP/4PG4/BI/SH 。这是相同的答案:<代码> HEK2MGL
(背书是旧版本的<代码> $(…)<代码>,不应用于新代码中)是的,但是他的解决方案在Solaris中不起作用,但是确实如此。哦,对了,Solaris使用一个非POSIX外壳(实际的Burne shell,我想)用于<代码> /bin /SH < /C>。如果可能的话,您可以考虑切换到Solaris的POSIX外壳, > /UR/XPG4/BI/SH < /代码>。