简单的正则表达式,用于检查输入的字符串是否作为IP地址匹配的条件。如果将正则表达式直接与参数进行比较,则可以正常工作,但是如果我对正则表达式使用了变量赋值,则无法正常工作。
我已经使用一些不同的语法进行了测试,但除非直接使用正则表达式,否则仍然无法正常工作。
#!/bin/bash
#provide one word/sentence as an argument to the script. If in that sentence will be ip address,
#find out, if that ip address is reachable or not.
#argument check
if [ $# -ne 1 ]; then
echo "Provide exactly one argument e.g. $0 argument"
exit 1
fi
var1=$1
#ip address regex 127.0.0.1
regexp="[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1-3}\.[0-9]{1,3}"
#regex check
#if ! [[ $var1 =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then
if ! [[ $var1 =~ $regexp ]]; then
echo "No IP address provided"
exit 2
fi
IP=${BASH_REMATCH[0]}
#find if ip address is reachable or not
ping -c4 $IP
if [ $? -eq 0 ]; then
status="Alive"
else
status="Dead"
fi
echo "IP found: $IP ($status)"
具有:
if ! [[ $var1 =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then
工作正常,但不能:
regexp="[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1-3}\.[0-9]{1,3}"
if ! [[ $var1 =~ $regexp ]]; then
我研究了许多文章,但找不到确切的答案。
答案 0 :(得分:1)
table_data = ['andrew', 'smith', 'bob', 'richardson', 'joe', 'jonas', 'matt', 'davis']
#Output
#{'name': ['andrew', 'bob', 'joe', 'matt'],
#'surname': ['smith', 'richardson', 'jonas', 'davis']}
应该是
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1-3}\.[0-9]{1,3}
# ^