При написании сценария оболочки много раз я получаю требование знать путь к моей папке сценария. Я не хочу жестко указывать путь в своем сценарии.
Команда 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 для различных примеров использования.
- Получить каталог резервных копий, который будет работать по тому же пути.
- Перенаправить вывод в файл журнала в той же папке сценария
- Прочитайте файл аргументов для вашего скрипта, который находится в той же папке скрипта
- и так далее……