Sådan undgår du +echo output i Jenkins shell scripts med -x aktiveret

Hvordan kan -x forblive aktiveret i shell scripts kørt fra Jenkins, men kun outputte selve beskeden fra echo kommandoen uden den ekstra linje med + echo "Message"?

For at undgå debug output fra echo kommandoen i et shell script kørt fra Jenkins, kan du midlertidigt deaktivere debug mode med set +x og genaktivere det med set -x, eller bruge en funktion som silent_echo til at håndtere echo kommandoer uden debug output.

Hvordan kan -x forblive aktiveret i shell scripts kørt fra Jenkins, men kun outputte selve beskeden fra echo kommandoen uden den ekstra linje med + echo "Message"?

For at opnå dette kan du bruge følgende fremgangsmåde:

  • Brug set +x og set -x til at midlertidigt deaktivere og genaktivere debug mode omkring echo kommandoen.

Her er et eksempel på, hvordan du kan gøre det:

#!/bin/bash
set -x
# Nogle kommandoer her

# Midlertidigt deaktiver debug mode
set +x
echo "Message"
# Genaktiver debug mode
set -x

# Flere kommandoer her

Med denne metode vil set -x forblive aktiveret for resten af scriptet, men echo kommandoen vil ikke outputte debug informationen.

  • Alternativt kan du bruge en funktion til at håndtere echo kommandoer uden debug output.

Her er et eksempel på en sådan funktion:

#!/bin/bash
set -x
# Nogle kommandoer her

# Funktion til echo uden debug output
silent_echo() {
  (set +x; echo "$@")
}

# Brug funktionen til at echo beskeder
silent_echo "Message"

# Flere kommandoer her

Ved at bruge en funktion som silent_echo, kan du nemt echo beskeder uden at deaktivere og genaktivere debug mode manuelt hver gang.