Ошибка использования командного вывода для переменной в функциях bash с использованием awk - PullRequest
1 голос
/ 12 января 2012

Я получаю сообщение об ошибке при попытке записать вывод команды в переменную, которая определена в функции.

chk()
        hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}')
chk

Это говорит мне об синтаксической ошибке:

. / Testchk.sh: Zeile 3: Syntaxfehler beim unerwarteten Wort hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}')' ./testchk.sh: Zeile 3: hostsum = $ (md5sum / etc / hosts | awk -F "" '{print $ 1}') '

Это работает вне функции, но просто не из-за функции, добавляющей некоторые дополнительные кавычки. Любые идеи, кроме как использовать его из функции?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Я думаю, вам просто нужно добавить фигурные скобки:

chk() { hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}') ; }

Хорошо работает здесь для меня. Справочная страница bash говорит, что функция должна содержать составную команду, из которых { list ; } является одним из примеров.

1 голос
/ 12 января 2012

попробуй:

chk() {
        hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}')
}
chk
...