I have hostname like following
www-foo-1001-1-1.example.com
I am writing script to which should deploy application which has following string match 1001-<any digit>-<any digit>
Example: script should match following hostname.
www-foo-1001-1-49
www-foo-1001-4-37
www-foo-1001-2-12
www-foo-1001-8-4
Ignore this pattern in hostname.
www-foo-1001-1-2-49
www-foo-1001-1-1-49
www-foo-1001-1
www-foo-1001
1001-N-N
and ignore anything else.More details i want to do if then..
and return exit
status code with $?
to throw error who are not matching standard hostname.
bash extended patterns are enabled within [[ ... ]]
; so you can do
hosts=( www-foo-1001-1-49 www-foo-1001-4-37 www-foo-1001-2-12 www-foo-1001-8-4 www-foo-1001-1-2-49 www-foo-1001-1-1-49 www-foo-1001-1 www-foo-1001 )
pattern='*-1001-+([[:digit:]])-+([[:digit:]])'
for h in "${hosts[@]}"; do
if [[ $h == $pattern ]]; then
echo "OK: $h"
else
echo "no: $h"
fi
done
OK: www-foo-1001-1-49
OK: www-foo-1001-4-37
OK: www-foo-1001-2-12
OK: www-foo-1001-8-4
no: www-foo-1001-1-2-49
no: www-foo-1001-1-1-49
no: www-foo-1001-1
no: www-foo-1001
My pattern starts with *-1001-
where I'm assuming that you don't want to match 11001
or 21001
etc.
The ==
operator in [[ ... ]]
is a pattern matching operator.
The right-hand operand is the pattern variable, but unquoted. That allows interpretation of the variable's value as a pattern not a string.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments