2010-04-28 4 views
4

Я хочу передать команду сценарию оболочки. Эта команда является командой 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 в качестве аргументов.

ответ

3

попробовать это:

eval $1 
+0

Большое спасибо. Это помогло мне. –

+0

Более корректной версией будет 'eval '$ 1" ', которая берет на себя несколько символов пробела и предотвращает переполнение файлов. –

2

Вы можете вызвать sh -c $1 вызвать первый аргумент в качестве команды в новой оболочке, так что оболочка специальные символы будут расширены.

Смежные вопросы