Pregunta

Siguiendo el código funciona para Bash, pero ahora lo necesito para Bus BusyBox Ash, que apenas no tiene "= ~"

keyword="^Cookie: (.*)$"
if [[ $line =~ $keyword ]]
then
bla bla
fi

¿Hay un reemplazo adecuado?

Lo siento si esta es una pregunta de superusuario, no se pudo decidir.

Editar: tampoco hay grep, sed, awk, etc. Necesito ceniza pura.

¿Fue útil?

Solución

para esta en particular, podría escapar a una Expansión de parámetros Hack:

if [ "$line" = "Cookie: ${line#Cookie: }" ]; then
    echo a
fi

o una Notación de coincidencia de patrones + Case Hack:

case "$line" in
    "Cookie: "*)
        echo a
    ;;
    *)
    ;;
esac

Sin embargo, esas soluciones son estrictamente menos poderosas que regexes porque no tienen una estrella de Kleene real* (solo .*) y usted debe realmente obtener algunas herramientas más poderosas (un lenguaje de programación real como python?) Instalado en ese sistema o lo sufre

Otros consejos

busybox viene con un applet expr que puede hacer una coincidencia regex (anclada al comienzo de una cadena).Si el Regex coincide, su código de retorno será 0. Ejemplo:

 # expr "abc" : "[ab]*"
 # echo $?
 0
 # expr "abc" : "[d]*"
 # echo $?
 1

Lo que funcionó para mí estaba usando las implementaciones de la casilla ocupada para grep y wc :

MATCHES=`echo "$BRANCH" | grep -iE '^(master|release)' | wc -l`
if [ $MATCHES -eq 0 ]; then
 echo 'Not on master or release branch'
fi

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top