#!/bin/bash
for n in 1 2;
do var=$(bc -l <<< 'scale=100; 4*a(1)')
my_time=$( (time bc -l <<< 'scale=100; 4*a(1)') 2>&1 >/dev/null)
echo $var
echo $my_time
printf "Value of PI is :%sn" $var
printf "Time calculated is :%sn" $my_time
done
输出:
real 0m0.005s user 0m0.004s sys 0m0.000s
Value of PI is :3.141592653589793238462643383279502884197169399375105820974944592307
Value of PI is :8164062862089986280348253421170676
Time calculated is :real
Time calculated is :0m0.005s
Time calculated is :user
Time calculated is :0m0.004s
Time calculated is :sys
Time calculated is :0m0.000s
3.141592653589793238462643383279502884197169399375105820974944592307 8164062862089986280348253421170676
real 0m0.004s user 0m0.000s sys 0m0.000s
Value of PI is :3.141592653589793238462643383279502884197169399375105820974944592307
Value of PI is :8164062862089986280348253421170676
Time calculated is :real
Time calculated is :0m0.004s
Time calculated is :user
Time calculated is :0m0.000s
Time calculated is :sys
Time calculated is :0m0.000s
正如你在这里看到的语句&;Value of PI is&;计算时间为;显示在每行上。请帮助!
请在$var
和$my_time
周围加上双引号,当变量包含换行(LF即n
)时非常有用。
#!/bin/bash
for n in 1 2; do
var=$(bc -l <<< 'scale=100; 4*a(1)')
my_time=$( (time bc -l <<< 'scale=100; 4*a(1)') 2>&1 >/dev/null)
echo $var
echo $my_time
printf "Value of PI is :%sn" "$var"
printf "Time calculated is :%sn" "$my_time"
done
如果您只想在一行上得到bc
结果,请在前面添加BC_LINE_LENGTH=0
:
BC_LINE_LENGTH=0 bc -l <<< 'scale=100; 4*a(1)'
(用BC 1.07.1测试)