根据bash中的索引匹配值

时间:2013-03-20 09:28:48

标签: bash indexing

我想知道在bash中是否有一种优雅的方式来执行以下操作:

我需要检查列表中的某个值,我们称之为“1”。对于我找到此值的每个条目,我需要在另一个列表中累积匹配的字符串(具有相同的索引),并最终将其打印出来。

例如: 让我们假设值列表是"1 0 1 1 "

,字符串列表为"What a wonderful day"

所以输出字符串为"What wonderful day"

由于

1 个答案:

答案 0 :(得分:2)

这是我提出的解决方案:

#!/bin/sh
myMatch=1 #This is the value you're looking for
myString="What a wonderful day";
myList=( $myString ) #String to Array conversion
count=0;
for i in $@; do #Iterate over the input parameters
    if [ $i -eq $myMatch ]; then
        echo -n "${myList[$count]} " #use -n to avoid newline and append space as a separator
        count=$(($count+1))
    fi
done

所以调用脚本给出值列表:

$ . myScript.sh 1 0 1 1

你有想要的结果。