Unix 命令作为参数传递给shell脚本

Unix 命令作为参数传递给shell脚本,unix,shell,scripting,Unix,Shell,Scripting,我想将命令传递给shell脚本。此命令是grep命令。执行时,我遇到以下错误,请帮助: myscript.sh "egrep 'ERROR|FATAL' \*20100428\*.log | grep -v aString" myscript.sh是一个简单的脚本: #!/bin/ksh cd log $1 错误是: egrep: can't open | egrep: can't open grep egrep: can't open -v egrep: can't open aStr

我想将命令传递给shell脚本。此命令是grep命令。执行时,我遇到以下错误,请帮助:

myscript.sh "egrep 'ERROR|FATAL' \*20100428\*.log | grep -v aString"
myscript.sh是一个简单的脚本:

#!/bin/ksh

cd log

$1
错误是:

egrep: can't open |
egrep: can't open grep
egrep: can't open -v
egrep: can't open aString
错误是因为egrap将|、grep、-v和aString视为参数。

请尝试以下操作:

eval $1

您可以调用
sh-c$1
,将第一个参数作为命令在新的shell中调用,以便扩展shell特殊字符。

更正确的版本是
eval“$1”
,它将处理多个空格字符并防止文件全局移动。