linux shell脚本printf数字格式颜色

时间:2018-04-05 07:30:19

标签: linux shell colors numbers printf

未来,对不起我的英文句子。 (我的英语很弱)

这是一个来源 我想用%d%f格式为$ {test}上色。
但是我收到了一个错误。号码无效。

我想保持%d%f格式(逗号和点),也想要颜色 请知道。

#!/bin/sh
warning_color=$(tput setaf 4) # blue
end_color=$(tput sgr0)

test="30000"
result="30000"
if [[ ${test} -gt 20000 ]]
then
  test="${warning_color}${test}${end_color}"
fi
printf "%'10d%'10d\n" "${test}" "${result}"

test="30000.13"
result="30000.13"
if [[ ${test%%.*} -gt 20000 ]]
then
  test="${warning_color}${test}${end_color}"
fi
printf "%'10.2f%'10.2f\n" "${test}" "${result}"

错误(错误消息中30000和30000.13颜色为蓝色)

a.sh: line 7: printf: 30000: invalid number
     0a.sh: line 11: printf: 30000.13: invalid number
  0.00

1 个答案:

答案 0 :(得分:0)

您需要将颜色添加到格式字符串中,否则当您将颜色代码添加到变量时,数字不再是插入或浮动

实施例

$ blue=$(tput setaf 4)
$ end=$(tput sgr0)
$ val1=3000
$ val2=3000.11
$ printf "$blue %10d $end\n" $val1
        3000
$ printf "$blue %10.2f $end\n" $val2
     3000.11