No dejes de compartir nuestro espacio y códigos en tus redes sociales, ayúdanos a ampliar esta comunidad.
Solución:
El problema es que cuando lo haces echo "False" > scan.txt
echo dejará un salto de línea al final del archivo, puede ver esto si hace eco env.TEXT
en su secuencia de comandos de canalización.
Así que lo que tienes que hacer es usar String.trim()
antes de comprobar si es igual False
, recortar eliminará todos los espacios en blanco al principio y al final. Además, la mejor manera de probar si un string contiene es para usar Boolean.parseBoolean()
hace todo el trabajo duro por usted.
Intentemos esto:
node
sh 'echo "False" > output.txt'
def val = readFile 'output.txt'
echo "$val"
echo "$val.trim()"
if (val.equals("False")) // This will print No
echo "Yes"
else
echo "No"
if (val.trim().equals("False")) // This will print Yes
echo "Yes"
else
echo "No"
if (!Boolean.parseBoolean(val)) // This will print Yes
echo "Yes"
else
echo "No"
Y en la salida obtenemos:
Started by user jon
[Pipeline] node
Running on master in /var/lib/jenkins/workspace/pl
[Pipeline]
[Pipeline] sh
[pl] Running shell script
+ echo False
[Pipeline] readFile
[Pipeline] echo
False
[Pipeline] echo
False
[Pipeline] echo
No
[Pipeline] echo
Yes
[Pipeline] echo
Yes
[Pipeline]
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Como puede ver, tenemos un salto de línea adicional cuando hacemos el primer paso de eco. También tenga en cuenta que Boolean.parseBoolean()
maneja el string sin ningún recorte.
aquí hay algunos casos, espero que ahorre tiempo para algunas personas:
node
sh 'echo "False" > output.txt'
def val = readFile 'output.txt'
echo "$val"
echo "$val.trim()"
if ( "$val.trim()" ==~ /False/ )
echo "Match Yes trim"
else
echo "Match No trim"
if ( "$val" ==~ /(?ms)False/ )
echo "Match Yes (?ms)"
else
echo "Match No (?ms)"
if ( "$val" ==~ /(?ms)False.*/ )
echo "Match Yes (?ms).*"
else
echo "Match No (?ms).*"
if ( "$val" =~ /False/ )
echo "Match Yes 1="
else
echo "Match No 1="
Producción:
[Pipeline] sh
+ echo False
[Pipeline] readFile
[Pipeline] echo
False
[Pipeline] echo
False
[Pipeline] echo
Match Yes trim
[Pipeline] echo
Match No (?ms)
[Pipeline] echo
Match Yes (?ms).*
[Pipeline] echo
Match Yes 1=
Donde (?ms) significa varias líneas y s para la nueva línea de coincidencia de puntos en expresiones regulares.
Tenga en cuenta que echo "False" >
agregará nueva línea al archivo. Esto necesita ser recortado o echo -n
usó.
Comentarios y calificaciones del tutorial
Si te sientes estimulado, eres capaz de dejar un ensayo acerca de qué le añadirías a este artículo.