bash - 如何显示变量名而不是其值
问题描述
这就是我所拥有的。
Server1=$(echo 192.168.0.1)
Server2=$(echo 192.168.0.2)
Server3=$(echo 192.168.0.3)
servers=($Server1 $Server2 $Server3)
for online in ${servers[@]}
do
ping $online -c2 > /dev/null
if [ $? -eq 0 ]
then
echo successful
else
echo “Cannot connect to “${!online}
fi
done
现在它输出“无法连接到”我希望它说“无法连接到 Server1 或任何其他。
解决方案
您可以只将名称存储在数组中并使用间接扩展来获取值:
Server1=192.168.0.1
Server2=192.168.0.2
Server3=192.168.0.3
servers=(Server1 Server2 Server3)
for online in "${servers[@]}"; do
if ping "${!online}" -c2 > /dev/null; then
echo successful
else
echo "Cannot connect to ${online} with ip ${!online}"
fi
done
推荐阅读
- node.js - export default 和 module.exports 有什么区别
- javascript - Dynamics CRM 统一表单中 IFRAME 的 setSrc 不起作用
- swift - 如何将一个 SwiftUI 视图作为变量传递给另一个视图结构
- python - 导入quandl模块的问题
- android - 如何区分适配器中视图之间的点击事件?
- javascript - 解析 JSON 数组响应
- python - 在 Python 中,我们如何编写只提取列表中可用的特定列的 sql 查询?
- sql - 在大型数据集上更新其他表的值很昂贵
- node.js - 如何在特定阶段将数据从 azure cosmos db 备份到 azure blob?
- java - jersey 2.x 中的 Multipart:java 客户端找不到内容类型 multipart/form-data 类型的编写器