我是一个Linux新手,我复制了一个从XML中提取值的bash脚本。我可以完美地回显计算结果,但将其赋值给变量似乎行不通。
#!/bin/bash
IFS=$'\r\n' result=(`curl -s "http://xxx.xxx.xxx.xxx/smartmeter/modules" | \
xmlstarlet sel -I -t -m "/modules/module" \
-v "cumulative_logs/cumulative_log/period/measurement" -n \
-v "point_logs/point_log/period/measurement" -n | \
sed '/^$/d' `)
# uncomment for debug
echo "${result[0]}"*1000 |bc
gas=$(echo"${result[0]}"*1000 |bc)
echo "${result[0]}"*1000 |bc为我提供了所需的结果,但我不知道如何将其赋给变量。
我试着用刻度标记:
gas=\`echo"${result[0]}"*1000 |bc\`并使用$(
谁能给我指个方向?
发布于 2015-12-31 00:16:01
如果你无论如何都想使用bc,那么你可以使用反勾号,为什么你要使用反斜杠呢?这段代码可以工作,我刚刚测试过。
gas=`echo ${result[0]}*1000 | bc`在echo后使用一个空格,在*运算符周围不使用空格
发布于 2015-12-30 23:59:31
不需要使用bc或echo。只需使用arithmetic expansion $(( expression ))即可执行此类操作:
gas=$(( ${result[0]} * 1000))这允许算术表达式的求值和结果的替换。
https://stackoverflow.com/questions/34532677
复制相似问题