我是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\`
使用$(
有人能指出我正确的方向吗?
答案 0 :(得分:4)
无需使用bc
或echo
。只需使用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`
之后使用一个空格,*运算符