2017-01-18 3 views
0

Я борюсь с передачей команды оболочки. В частности, я написал файл оболочки, который будет запускаться пользователем. В нем другой файл оболочки записывается на основе пользовательских входов. Затем этот файл будет передан команде, которая отправляет задание.Как написать команду сценария оболочки из сценария оболочки без оценки команды

Теперь в этом внутреннем файле оболочки есть переменная, содержащая функцию. Однако, когда я запускаю сценарий оболочки пользователя, я не могу передать эту функцию таким образом, чтобы внутренний файл оболочки мог ее использовать.

Я не могу разделить свою работу, но я постараюсь сделать пример

#User shell script 
cat >test.txt <<EOF 
#a bunch of lines that are not relevant 
var=`grep examples input.txt` 
/bin/localfoo -${var} 
EOF 
# pass test.txt to localfoo2 
/bin/localfoo2 /test.txt 

Когда я запускаю «User Shell Script» печатает, что Grep не может найти файл, но я не Не хочу, чтобы grep оценивался. Мне нужно, чтобы это было написано так, как если бы было прочитано строка '/ bin/localfoo2 /test.txt', вычисляется grep.

Я пробовал несколько вещей. Я пробовал двойные обратные тики, я пробовал использовать «echo $ (eval $ var)». Но ни один из методов, которые я нашел через googling, не смог передать этот var таким образом, чтобы выполнить то, что я хочу.

Ваша помощь очень ценится.

ответ

0

Вы можете использовать одиночную кавычку ('). Вы должны поставить одиночную кавычку перед командой grep и командой grep, как показано ниже.

#User shell script 
cat >test.txt <<EOF 
#a bunch of lines that are not relevant 
var='`grep examples input.txt`' 
/bin/localfoo -${var} 
EOF 
# pass test.txt to localfoo2 
/bin/localfoo2 /test.txt 

Я не понял, где вы должны выполнить команду grep. Если вы хотите выполнить команду grep внутри скрипта localfoo, я надеюсь, что этот метод поможет.

+0

Команда grep должна выполняться при выполнении localfoo2. В качестве входных данных требуется test.txt. Я попробовал обернуть его в одинарные кавычки, но тогда test.txt просто содержит var = '' –

+0

Вы просто удаляете обратный тик как var = 'grep examples input.txt'. Попробуй это. – sureshkumar

+0

Но тогда это просто становится общей строкой, не так ли? Вам понадобится eval, чтобы фактически получить значение из grep. –

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