gpt4 book ai didi

linux - Bash 从行中的 2 个单词中添加数字

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:27 24 4
gpt4 key购买 nike

我正在制作一个接受这样的输入行的脚本

 Dave: 1 2 3 

并在终端中输出这种格式的数字之和

 Dave: 6

一切都很好,除非第一个单词是数字......在某些情况下。如果数字为 1 位,则输出符合预期。即:

 1: 1 2

输出

 1: 3

但是,如果该行中的第一个单词是 2 位数字,并且最低有效值但不等于 0,则脚本会将该值合并到总和中。例如:

 12: 1 2 3

变成:

 12: 8

因为最低有效值“2”也被添加到总和中。

这是我的代码,我突出显示了有问题的行。

#!/bin/bash
filename=/dev/stdin
sum1=0;
re='^[0-9]+$'


if [ $# -gt 0 ] ; then
if [ -e $1 ] ; then
filename=$1
else
filename=/dev/stdin
fi
fi

#sed '/^$/d' $filename

while read line ; do

name=$(echo $line | cut -d ' ' -f 1)
# numbers=$(echo $line | wc -w)

if [[ $name =~ $re ]] ; then
#VVVVV PROBLEMATIC LINE
numbers="${line[@]:1}"
^^^^ PROBLEMATIC LINE
for i in $numbers; do
sum1=$(($sum1+$i))
done

printf $line
echo ' '$sum1
sum1=0
else

for p in $line ; do
#echo $line
sum1=$(($sum1+$p))

done
#print first word of line here!
if [ "$line" != "" ] ; then

printf $line
echo ' '$sum1
fi
sum1=0
fi
done < $filename

抱歉,如果我的代码不好,我是 Bash 菜鸟

最佳答案

这是获取第一个字符之后的所有行:

   numbers="${line[@]:1}"

我想你想要的东西更像是:

numbers=$(echo $line | cut -d ' ' -f 2-)

关于linux - Bash 从行中的 2 个单词中添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com