job - run cron linux
¿Cómo funciona bash script command substitution? (1)
Y: "¿Por qué este guión en particular tiene este resultado?"
De obtener el directorio de origen de un script Bash desde dentro , basado en algunos fragmentos de código ofrecidos por el usuario l0b0 en su comentario sobre esa pregunta, utilicé lo siguiente para un trabajo cron:
DIR=$(pwd)
if [ $CRON == "true" ]; then
# If the environment variable $CRON is set to true, we''re probably in a cron job
if [ $PWD == "/" ]; then
# And if the current working directory is root, we''re probably in a cron job
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd && echo x)"
DIR="${DIR%x}"
fi
fi
Sin embargo, mi variable de directorio ($ DIR) de alguna manera termina con una nueva línea después de ella de todos modos, que rompe el script cada vez que se usa la variable $ DIR para crear una ruta. ¿Por qué está la nueva línea allí?
Es cierto que no estoy demasiado familiarizado con los matices de los scripts bash y la sustitución de comandos. Es posible que malinterprete el propósito detrás del guión de l0b0.
Simple: el código sugerido es incorrecto y siempre agrega un salto de línea (porque pwd siempre imprime uno).
La versión corregida sería
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && printf "%sx" "$PWD")"
dir=${dir%x}