gpt4 book ai didi

linux - bash 中的 case 语句替代方案

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:07 25 4
gpt4 key购买 nike

我有一个依赖主机名的脚本。如果主机名是 X,则使用 Y 作为该主机的变量是一种要求。

映射在文件中。大约有 50 个映射。我能够使用 case 语句来解决它,但寻找更简单的替代方法来从文件中读取映射,而不是为所有 50 个服务器编写 case 语句。

示例:

映射文件是 file.txt

Apple   Fruit
chair furniture
man human
pizza food

我的逻辑是有效的:

hostname=uname -n
case $hostname in
chair )
Qmgr=furniture
rest of my code here
;;
Apple )
Qmgr=fruit
rest of my code here
;;
man )
Qmgr=Human
rest of my code here
;;
pizza )
Qmgr=Food
rest of my code here
;;
* )
not recognized serer from the mappings file.txt
;;
esac

最佳答案

将数据读入关联数组。

declare -A managers
while read -r host mgr; do
managers[$host]=$mgr
done < file.txt

hostname=$(uname -n)
qmgr=${managers[$hostname]}

if [[ -z $qmgr ]]; then
printf 'Unrecognized server %s\n' "$hostname"
fi

关于linux - bash 中的 case 语句替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54009103/

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