2014-11-19 2 views
0

У меня возникли некоторые трудности, делая переменные ведут себя так, как я хочу их ...Ввод конечного результата команды в переменную

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

Моя первая строка выглядит следующим образом: DiskSizeDecimal=$(diskutil list | grep 'Automation' | awk '{print $4}')

Я тогда вход, что новая переменная в этой строке: DiskSize=$(awk 'BEGIN { rounded = sprintf("%.0f", ‘$DiskSizeDecimal’); print rounded }’)

, котор я не в конечном итоге получить результат, что нужно для $ DiskSize, потому что строка по-прежнему кажется для интерпретации $ DiskSizeDecimal как строки команд, а не числа, которое оно выводит.

Любая помощь очень ценится!

Спасибо! :)

Афина Harting

ответ

0

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

DiskSize=$(diskutil list | awk '/Automation/{printf "%.0f", $4}') 
+0

Большое спасибо за этот ответ. Это помогло мне немного упростить мой код, но я все еще сталкиваюсь с этой проблемой позже в своем коде, когда пытаюсь использовать $ DiskSize в этой строке 'FreeSpace = ((($ DiskSize'-40) * 1024))' –

+0

Что такое значение '$ DiskSize'. Ваша последняя команда должна быть: 'FreeSpace = $ ((($ DiskSize-40) * 1024))' – anubhava

+0

Значение $ DiskSize всегда будет отличаться в зависимости от системы, в которой работает скрипт, даже используя вашу разнесенную строку , Я до сих пор получаю ошибку «синтаксическая ошибка: неверный арифметический оператор (ошибка токена« ???? - 40) * 1024 »)' –

0

Это исправлено! Я закончил использование $ (echo $ DiskSize) в командах, в которых мне нужно было использовать переменную, в которой разрешалось число, а не команда. Спасибо Анбхаве за вашу помощь! : D

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