При написании сценария оболочки много раз я получаю требование знать путь к моей папке сценария. Я не хочу жестко указывать путь в своем сценарии.

Команда linux/unix dirname помогает достичь этого. В следующем примере отображается путь к каталогу.

dirname /home/agv/scripts/dirtest.sh

Примеры выходных данных:

/home/agv/scripts

Теперь давайте dirname в сценарии оболочки.

#!/usr/bin/env bash
## Author: Aravind G V
BASEDIR=$(dirname "$0")
echo "$BASEDIR"
if [ $BASEDIR == "." ]; then
        myscriptdir=`pwd`
fi
echo $myscriptdir

Из приведенного выше сценария мы можем использовать переменную myscriptdir для различных примеров использования.

  • Получить каталог резервных копий, который будет работать по тому же пути.
  • Перенаправить вывод в файл журнала в той же папке сценария
  • Прочитайте файл аргументов для вашего скрипта, который находится в той же папке скрипта
  • и так далее……