Alguien anterior publicado:
#!/bin/bash
#function to display commands
exe() { echo "\$ [email protected]" ; "[email protected]" ; }
y esto l Ook es prometedor, pero no puedo por mi propia vida descubrir qué hace. Busqué en Google y busqué en la página de hombre bash para "\ $" y "$ @", y encontré absolutamente nada.
Entiendo que se está creando una función, llamada "exec()". Entiendo que los corchetes marcan el comienzo y el final de la función.Creo que entiendo que el punto y coma indica un "retorno difícil" entre un comando de varias líneas, de modo que "{echo" \ $ $ @ "; ps }' Se convierte, en esencia:
{
echo "\$ [email protected]"
"[email protected]"
}
¿Puede alguien darme una breve explicación, o dónde encontrar esta información, ya que, obviamente, mi google-fu me está fallando?
(Sin tener que empezar una nueva pregunta en un hilo viejo, mi objetivo es redirigir la salida a un archivo. El método "set -x; [commands]; set + x" me funcionaría adecuadamente, pero no puedo entender cómo hacer eco de los resultados en un archivo en lugar de en la pantalla, así que estaba tratando de entender este otro método con la esperanza de que pudiera usarme una comprensión muy pobre de la redirección/pipes/tee/etc para hacer lo mismo cosa.)
Gracias!
de editar posteriormente:
Con algunos retoques, creo que lo he descubierto. Aquí está mi código equivalente para lo que estoy necesitando:
SCRIPT_LOG="\home\buddy\logfile.txt"
exe() {
params="[email protected]" # Put all of the command-line into "params"
printf "%s\t$params" "$(date)" >> "$SCRIPT_LOG" # Print the command to the log file
$params # Execute the command
}
exe rm -rf /Library/LaunchAgents/offendingfile
exe rm -rf /Library/LaunchAgents/secondoffendingfile
Los resultados en el logfile.txt ser algo como:
Tue Jun 7 16:59:57 CDT 2016 rm -rf /Library/LaunchAgents/offendingfile
Tue Jun 7 16:59:57 CDT 2016 rm -rf /Library/LaunchAgents/secondoffendingfile
Justo lo que necesitaba. ¡Gracias!
El uso de la palabra "prolija" de esa manera no se logra nada. Puede hacer 'set -o verbose' o' set -v' (solo "verbose") o 'set -o xtrace' o' set -x' (solo "xtrace") o 'set -xv' (ambos) o 'set -o xtrace -o verbose' (ambos). –
esto funciona bien, pero tenga en cuenta que el "detallado" sobrescribe $ 1 – JasonS
@jasonS * bien. Pero sí, yo no había pensado en eso, bueno – Wyatt8740