外壳:如何做减号

我想从一个数中减去一个值列表。外壳:如何做减号

我想:

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

回到顶部