2014-10-27 2 views
0

Моя платформа OS это: SunOS machinehull01 5,10 Generic_148888-05 sun4v СПАРК SUNW, вс-Fire-T200Выполнение сценария оболочки из файла

Я написал скрипт для запуска из файла

имя файла: test.sh

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

когда я запускаю выше команды в консоли я получаю правильный вывод без ошибок, но когда я бегу ш test.sh или ./test.sh Я ниже погрешности

test.sh: -l: not found 
Found 

Может кто-нибудь, пожалуйста, помогите мне в этом?

ответ

0

Got it.

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

я должен был поставить эти (`) там.

+1

Это тот же ответ, что и' hek2mgl' (backticks - более старая версия '$ (...) 'и не должен использоваться в новом коде). – chepner

+0

Да, но его решение не работает в Solaris, но это так. – user360321

+0

О, хорошо, Solaris использует оболочку non-POSIX (собственно, оболочку Bourne, я думаю) для '/ bin/sh'. Вы можете подумать о переходе на оболочку POSIX Solaris, '/ usr/xpg4/bin/sh', если это возможно. – chepner

3

Вы ищете так называемой «команды подстановки»:

VARNAME=$(grep -l TestWord /home/hull/xml/text/*.txt) 
echo "Found $VARNAME" 

Он будет выполнять команду между $( и закрывающей скобкой ) в субоболочке и возвращает результат выполнения команды в VARNAME.

+0

Я получаю ниже ошибки, когда я добавил скобки там test.sh: синтаксическая ошибка в строке 2: 'WEEKLY = $ 'неожиданный – user360321