我是 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
Run Code Online (Sandbox Code Playgroud)
给了我我需要的结果,但我不知道如何将它分配给一个变量。
我尝试使用刻度线:
gas=\`echo"${result[0]}"*1000 |bc\`
Run Code Online (Sandbox Code Playgroud)
与 $(
有人可以指出我正确的方向吗?
Ija*_*han 14
如果您bc无论如何都想使用,那么您可以只使用 back ticks ,为什么要使用反斜杠?这段代码有效,我刚刚测试过。
gas=`echo ${result[0]}*1000 | bc`
Run Code Online (Sandbox Code Playgroud)
echo在 * 运算符之后使用一个空格并且周围没有空格
没有必要使用bcnor echo。只需将算术扩展$(( expression ))用于此类操作:
gas=$(( ${result[0]} * 1000))
Run Code Online (Sandbox Code Playgroud)
这允许计算算术表达式并替换结果。
| 归档时间: |
|
| 查看次数: |
17786 次 |
| 最近记录: |