没有换行符的Echo会导致语法错误

时间:2014-08-06 19:21:24

标签: bash

我正在编写一个shell脚本,我希望有这个代码

echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

最后没有换行符。 我想用echo -n编写它,但是这段代码

echo -n $(awk '{print $1}' /proc/uptime) / 3600 | bc

导致语法错误:

(standard_in) 1: syntax error

你能帮我解决这个问题吗? 非常感谢你!

2 个答案:

答案 0 :(得分:1)

echo $(awk '{print $1}' /proc/uptime) / 3600 | bc | tr -d "\n"

备选方案:

echo -n $(($(cut -d . -f 1 /proc/uptime)/3600))

mapfile A </proc/uptime; echo -n $((${A%%.*}/3600))

答案 1 :(得分:0)

使用echo -n的解决方案:

echo -n $(echo $(awk '{print $1}' /proc/uptime) / 3600 | bc)

通常情况下,如果foo生成一行输出,即使echo -n $(foo)很复杂,也可以使用foo打印相同的输出而不使用换行符。

使用纯awk的更直接的解决方案(因为awk执行算术输出格式化,使用awk和{{1}没有太大意义}}):

bc