script run job cronjobs create linux bash cron directory

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}