【发布时间】:2015-04-16 14:44:48
【问题描述】:
我创建了一个短信自动回复脚本,目前它允许从我的机器回复所有电话号码,现在我只想过滤一个特定的电话号码,所以当其他电话号码不在列表中时,我的机器会忽略它.
#!/bin/bash
PhoneNumberFilter="yes"
PhoneNumber[0]="08123"
PhoneNumber[1]="08321"
PhoneNumber[2]="12345"
MyPhoneNumber="08321"
echo "My phone number is: $MyPhoneNumber"
echo "all numbers: ${PhoneNumber[@]}"
if [[ "$PhoneNumberFilter" == "yes" ]] && [[ *"$MyPhoneNumber"* == "${PhoneNumber[*]}" ]]; then
echo "it works"
echo "My phone number is in the list of arrays"
echo "Send SMS to my phone number only"
else
echo "it doesn't work, my phone number is not in the list"
echo "ignore it"
fi
如何显示it works 部分?当我执行该脚本时,它总是显示it doesn't work 部分。
【问题讨论】:
-
执行此操作的高效方法是将数字存储在键字段中,而不是值字段中;那么这是一个 O(1) 查找。
-
还是没看懂,抱歉我还在学习,应该怎么实现呢?
-
我用命令
case修复了它,谢谢:D -
删除了我之前的评论——我错了。正确的东西实际上是
[[ " ${PhoneNumber[*]} " = *" $MyPhoneNumber "* ]]——带有空格。但是,如果数组值可以包含空格,这仍然是错误的(容易出现误报),因此关联数组方法可以更好地扩展并且更可靠。
标签: bash