printf с переменной в unix - PullRequest
       7

printf с переменной в unix

0 голосов
/ 20 сентября 2018

Я пытаюсь использовать printf с переменной на Unix (вывод должен быть 10,1 мс), и до сих пор у меня есть:

var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2

В одном окне терминала Bash, он возвращает строкутекста, который я хочу, но с другой стороны, он возвращает 0.0, который я не совсем понимаю.

1 Ответ

0 голосов
/ 20 сентября 2018

Синтаксис, который вы использовали:

var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2

просто означает: вызовите printf и поместите две переменные в окружение printf И дайте фактическим значениям $var1 и $var2 , как определено в вызывающей оболочке в качестве аргумента printf.Причина: не printf оценивает $var1 и $var2, а вызывающую оболочку.

Итак: если среда вашей оболочки не содержит var1 и var2, то вызов эквивалентен

var1=10.123 var2=mss printf "%.1f%4.2s\n"

Если - с другой стороны - оболочка уже знает эти переменные:

var1=foo
var2=bar

, тогда вызов эквивалентен:

var1=10.123 var2=mss printf "%.1f%4.2s\n" foo bar

Итак, я предполагаю, что выустановили для этих переменных какое-то значение в этом «одном терминале».

Возможное решение:

( var1=10.123; var2=mss; printf "%.1f%4.2s\n" $var1 $var2 )

Но:

Переменные будутвиден только printf.Поэтому самое простое решение - полностью их опустить:

printf "%.1f%4.2s\n" 10.123 mss
...