Как работает замена команды bash script?

И: "Почему этот конкретный script имеет этот результат?"

Из Получение исходного каталога Bash script из на основе некоторых фрагментов кода, предлагаемых пользователем l0b0 в его комментарий по этому вопросу, я использовал следующее для задания 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

Однако моя переменная каталога ($ DIR) каким-то образом заканчивается новой строкой после нее, что прерывает script в любое время, когда переменная $DIR используется для создания пути. Почему есть новая строка?

По общему признанию, я не слишком разбираюсь в нюансах Bash сценариев и подстановки команд. Возможно, я неправильно понял цель за l0b0 script.

Ответ 1

Простой: предлагаемый код неверен и всегда добавляет фид строки (поскольку pwd всегда печатает один).

Скорректированная версия будет

dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && printf "%sx" "$PWD")"
dir=${dir%x}