Проблема с запуском сценария bash в ответ на интерактивные подсказки

У меня возникают некоторые проблемы с запуском сценария оболочки в интерактивном приглашении. Весь код работает нормально, и если я заменю сценарий bash строкой echo 'hello world', он будет работать без каких-либо проблем. Я не очень давно использую оболочку, поэтому буду признателен за любой ответ, сопровождаемый объяснением.

В основном то, что я пытаюсь сделать, - это заставить интерактивный сценарий оболочки подсказывать мне, хочу ли я запустить другой сценарий, чтобы начать резервное копирование моих данных.

Я попытался запустить основной сценарий (bash my_script.sh) с помощью команды bash и получил следующую ошибку.

main_backup_pend.sh: line 17: bash: command not found

В строке 17 я вызываю сценарий bash, показанный ниже ...

[Yy]* ) echo 'Copying database...'; bash $PATH/backup.database.sh > backup.log.$DATE.database; break;; 

#!/bin/bash

PATH=/data/sjamal/4.Backups
DATE=170317

#[COPY]Mysqldump, making database copy storing it locally

    while true; do
    read -p "Do you wish make a database copy?" yn
    case $yn in
        [Yy]* ) echo 'Copying database...'; bash $PATH/backup.database.sh > backup.log.$DATE.database; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done

#[BACKUP]Performing back up of Repository to HPC

    while true; do
    read -p "Do you wish to back up Repository to HPC?" yn
    case $yn in
        [Yy]* ) echo 'backing up Repository...'; bash $PATH/backup.Repository.sh > backup.log.$DATE.repository; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done
-1
17.03.2017, 18:53
1 ответ

Первая строка вашего скрипта ломает все:

PATH=/data/sjamal/4.Backups

Это говорит вашему скрипту, что все его команды, включая bash сам интерпретатор - живут исключительно в этом каталоге. (Возможно, вы не знали, что PATH - это зарезервированная переменная? Попробуйте когда-нибудь echo $ PATH , чтобы увидеть список каталогов, в которых обычно выполняется поиск команд.)

Измените свой использование PATH во всем сценарии для чего-то еще, возможно, backup_dir , и это с большей вероятностью будет работать, как ожидалось.


Другие подсказки: поместите свои переменные (и пути, использующие переменные) в "$ double_quotes" , когда вы их используете. Поэтому вместо backup.log. $ DATE.repository используйте «backup.log. $ DATE.repository» .

1
28.01.2020, 05:10

Теги

Похожие вопросы