Как назначить вывод команды для переменной? - PullRequest
1 голос
/ 16 марта 2010

это, наверное, очень глупый вопрос; в bash-скрипте, учитывая вывод, например;

awk '{print $7}' temp

дает 0,54546

Я хотел бы передать это переменной, поэтому я попытался:

* +1007 *

но я получаю

Syntax error: redirection unexpected

Не могли бы вы сказать, почему и как проще всего выполнить это задание?

Спасибо

Ответы [ 3 ]

3 голосов
/ 16 марта 2010

Вы можете выполнить подстановку команды как:

ENE=$(awk '{print $7}' temp)

или

ENE=`awk '{print $7}' temp`

Это присвоит значение 0.54546 переменной ENE

2 голосов
/ 16 марта 2010

ваш синтаксис должен быть

read ENE <<<$(awk '{print $1}' file)

вы также можете напрямую присвоить значение

ENE=$(awk '{print $7}' temp)

вы также можете использовать оболочку

$ var=$(< temp)
$ set -- $var
$ echo $7

может прочитать его в массив

$ declare -a array
$ read -a array <<<$(<file)
$ echo ${array[6]}
0 голосов
/ 16 марта 2010

В общем, Bash в некотором роде чувствителен к пробелам (требует, чтобы они были в некоторых местах, и ломался, если их добавляли в другие места), что, на мой взгляд, слишком плохо. Просто помните, что по обе стороны от знака равенства не должно быть пробелов, не должно быть пробела после знака доллара, а круглые скобки должны быть заключены в пробелы (как это) (не так).

`команда` и $ (команда) - это одно и то же, но $ (эта версия может быть $ (вложенная)), тогда как" эта версия может быть `встроена в строки`."

...