如何在循环中定义两个变量而不在bash中重复

时间:2016-01-22 09:46:51

标签: bash shell

我有一个list文件,其中包含:

1.1.1.1:50
1.1.1.2:60
1.1.1.3:70

我正在尝试创建两个变量并执行内部应用程序以使用第二列散列第一列。我做的是这些循环,但它们给了我9种可能性,我需要只有3个

这是我的剧本

#!/bin/bash
for a in $(cat list | cut -d ":" -f 1 )
do
    for b in $(cat list | cut -d ":" -f 2 )
    do
        echo $a,$b # this is example 
    done
done

1 个答案:

答案 0 :(得分:1)

sed 's/:/ /' list |
while read ipv4 port
do
    echo "IPv4 address: $ipv4; Port number: $port"
done

唯一需要注意的是,如果在循环中设置其他变量,它们将在子shell中运行,不会影响脚本的其余部分。如果需要,有很多方法(查找process substitution)。