你能帮我吗?
我想创建一个动态文件夹匹配项,如果文件夹名称匹配数组中的一个项目,那么将根据文件夹名称触发输出。 这是一个例子。
#!/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
但是我不知道如何开始,我只对上面的简单代码进行了了解。你能帮我吗?
非常感谢您
答案 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的好地方。