外壳:如何做减号
我想从一个数中减去一个值列表。外壳:如何做减号
我想:
DATACOME=1013 DATAREF=1010
1020
var=$((DATACOME - DATAREF))
echo "$var"
3
它的工作原理只是第一个值$DATAREF
和输出3
代替:
echo "$var" 3
-7
回答:
直接的方法是值的列表保存为一个数组dataref
,然后用for
循环对其进行迭代:
datacome=1013 dataref=(1010 1020)
for num in "${dataref[@]}"; do
echo $((datacome - num))
done
如果你不想使用数组,你可以存储你的价值观在用空白字符分隔字符串,并使用awk
:
datacome=1013 dataref="1010 1020"
awk -v num="$datacome" '{
for (i = 1; i <= NF; i++) {
print num-$i
}
}' <<< "$dataref"
再或者使用字处理一个for
循环拆分此时间:
datacome=1013 dataref="1010
1020"
for num in $dataref; do
echo $((datacome - num))
done
或使用文件来存储你的时候值:
#input_file: #1010
#1020
datacome=1013
while read num; do
echo $((datacome - num))
done < input_file
awk -v num="$datacome" '{ for(i = 1; i <= NF; i++) {
print num-$i
}
}' < input_file
编辑:上@耶的建议,这是bc
的许多可能的方法可以做到这一个:
datacome=1013 dataref="1010 1020"
for num in $dataref; do
echo "$num-$datacome"
done | bc -l
真的会有很多方法来做到这一点。此外,请不要使用大写变量,因为它们可能会与环境和内部shell变量发生冲突。
以上是 外壳:如何做减号 的全部内容, 来源链接: utcz.com/qa/258587.html