匹配目录名称并使用数组采取措施

时间:2019-06-29 23:06:03

标签: bash shell glob

你能帮我吗?

我想创建一个动态文件夹匹配项,如果文件夹名称匹配数组中的一个项目,那么将根据文件夹名称触发输出。 这是一个例子。

#!/bin/bash
A=("banana"=>"yellow", "apple"=>"red", "watermelon"=>"green")
for dir in fruits/* 
do 
    if [ "$dir" = "{banana, apple or watermelon}" ]; then 
        echo "The color of the fruit is: {fruit-color}"
    fi
done

但是我不知道如何开始,我只对上面的简单代码进行了了解。你能帮我吗?

非常感谢您

1 个答案:

答案 0 :(得分:2)

Associative arrays的创建方式如下:

declare -A fruit
fruit=( ["banana"]="yellow" ["apple"]="red" ["watermelon"]="green" )

您的条件可以实现为case statement

case "$dir" in
    banana|apple|watermelon)
        echo "The color of the fruit is: ${fruit[$dir]}"
        ;;
    *)
        break
esac

Matching the keys有点笨拙,但是可以做到:

for key in "${!fruit[@]}"
do
    if [[ "$dir" = "$key" ]]
    then
        echo "The color of the fruit is: ${fruit[$key]}"
    fi
done

通过shellcheck运行结果脚本是一个好主意,而Greg's Wiki是学习Bash的好地方。