如何在bash脚本中将echo的结果赋值给变量

时间:2015-12-30 15:50:22

标签: linux bash

我是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\`

使用$(

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

无需使用bcecho。只需使用arithmetic expansion $(( expression ))进行此类操作:

gas=$(( ${result[0]} * 1000))

这个允许评估算术表达式和结果的替换

答案 1 :(得分:2)

如果你想要使用def search(directory): global file_count excludes = ['Yes', 'Maybe', 'Skipped'] for root, subdirs, files in os.walk(directory, topdown=True): subdirs[:] = [d for d in subdirs if d not in excludes] for file in files: if os.path.splitext(file)[1].lower() in ('.jpg', '.jpeg'): img = os.path.join(root, file) file_count += 1 yield img 那么 你可以使用后退滴答,为什么你使用反斜杠?这个代码有效,我刚刚测试过。

bc

gas=`echo ${result[0]}*1000 | bc` 之后使用一个空格,*运算符

周围没有空格