Я борюсь с передачей команды оболочки. В частности, я написал файл оболочки, который будет запускаться пользователем. В нем другой файл оболочки записывается на основе пользовательских входов. Затем этот файл будет передан команде, которая отправляет задание.Как написать команду сценария оболочки из сценария оболочки без оценки команды
Теперь в этом внутреннем файле оболочки есть переменная, содержащая функцию. Однако, когда я запускаю сценарий оболочки пользователя, я не могу передать эту функцию таким образом, чтобы внутренний файл оболочки мог ее использовать.
Я не могу разделить свою работу, но я постараюсь сделать пример
#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 таким образом, чтобы выполнить то, что я хочу.
Ваша помощь очень ценится.
Команда grep должна выполняться при выполнении localfoo2. В качестве входных данных требуется test.txt. Я попробовал обернуть его в одинарные кавычки, но тогда test.txt просто содержит var = '' –
Вы просто удаляете обратный тик как var = 'grep examples input.txt'. Попробуй это. – sureshkumar
Но тогда это просто становится общей строкой, не так ли? Вам понадобится eval, чтобы фактически получить значение из grep. –