instrução de caso de shell
Esta é a solução mais portável, funcionará até mesmo em velhos invólucros Bourne e casca Korn
#!/bin/bash
case "abcd" in
*$1*) echo "It's a substring" ;;
*) echo "Not a substring" ;;
esac
Execução da amostra:
$ ./case_substr.sh "ab"
It's a substring
$ ./case_substr.sh "whatever"
Not a substring
Observe que você não precisa usar especificamente echo
para usar exit 1
e exit 0
para indicar sucesso ou falha.
O que poderíamos fazer também é criar uma função (que pode ser usada em grandes scripts, se necessário) com valores de retorno específicos (0 na correspondência, 1 na não correspondência):
$ ./substring_function.sh
ab is substring
$ cat substring_function.sh
#!/bin/sh
is_substring(){
case "$2" in
*$1*) return 0;;
*) return 1;;
esac
}
main(){
if is_substring "ab" "abcdefg"
then
echo "ab is substring"
fi
}
main $@
grep
$ grep -q 'ab' <<< "abcd" && echo "it's a substring" || echo "not a substring"
it's a substring
Essa abordagem específica é útil com instruções if-else em bash
. Também principalmente portátil
AWK
$ awk '$0~/ab/{print "it is a substring"}' <<< "abcd"
it is a substring
Python
$ python -c 'import sys;sys.stdout.write("it is a substring") if "ab" in sys.stdin.read() else exit(1)' <<< "abcd"
it is a substring
Ruby
$ ruby -e ' puts "is substring" if ARGV[1].include? ARGV[0]' "ab" "abcdef"
is substring