2014-10-09 2 views
0

Я пытаюсь отправить параметр, который также содержит сильные цитаты, но до сих пор не увенчался успехом. Я пытаюсь написать код что-то вроде этого среди с большим количеством вариантов, которые также не работают, как ожидалось:Как передать сильную цитату как параметр функции bash

diffFile() 
{ 
    cat dir1/$1 | "$2" 
} 

diffFile "chkconfig" "awk '{print $1}'" 

Но проблема в том, когда я запускаю сценарий сильный процитировать получает убежали. Как пропустить сильную цитату?

+2

Не делайте этого: [! Я пытаюсь поставить команду в переменной, но сложные случаи всегда терпят неудачу] (http://mywiki.wooledge.org/BashFAQ/050) – fedorqui

+0

I просто нужно было для простых случаев. В любом случае спасибо за ваш ценный ответ. Я не буду использовать его в сложных случаях :) –

+0

Почему вы так делаете это? awk принимает файлы в качестве аргументов. –

ответ

1

У меня получилось решение после игры с моим скриптом.

diffFile() 
{ 
    cat dir1/$1 | eval "$2" 
} 

diffFile "chkconfig" "awk '{print \$1}'" 
+1

Использование 'eval' не рекомендуется. Потратьте минутку и спросите себя *, что * цель 'diffFile'. Является ли это общей оболочкой, которая передает файл в 'dirt' произвольной команде оболочки, которая читает стандартный ввод? – chepner

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