Невозможно записать в файл с помощью скрипта - PullRequest
1 голос
/ 19 июня 2020

Я написал сценарий, который должен запускать некоторые команды, перезагружать мой сервер ubuntu, а затем после загрузки сервера возобновлять работу и удалять запись из файла bash.

У меня есть часами пытался понять, почему мой скрипт не пишет в .bashr c (или в любой другой файл). Тестирование команд по отдельности работает нормально. Однако при запуске моего сценария в файл ничего не записывается. На данный момент я в тупике и очень хотел бы, чтобы мне помогли бесплатные глаза, потому что я уверен, что причина в глупости и, вероятно, что-то мне не хватает. Это был бы мой первый сценарий, извините, если это окажется глупым вопросом. Я помещаю команду sudo reboot в комментарий, чтобы мне не приходилось каждый раз перезагружаться.

Имя сценария test. sh и запускается из ~ /. Надеюсь, это понятно, и я ничего не пропустил.

#!/bin/bash

echo "Script initiating"

#condition for script to run after reboot, created later on
if [ ! -f /var/run/bootflag ]; then
        echo "First run"
        script="bash ~/test.sh"
        #this will add the script in the bash file so it will be ran on next boot
        echo "$script" >> ~/.bashrc

        echo "bash entry added"
        #creating flag file to check if this is a second run
        sudo touch /var/run/bootflag
        echo "Flag created"
        echo "Rebooting..."
        #sudo reboot
else
        echo "resuming script..."
        echo "cleaning up..."
        #remove the bash entry by replacing it with a space
        sed -i '/bash/d' ~/.bashrc


        echo "bash entry removed"
        #remove the boot flag
        sudo rm -f /var/run/bootflag

        echo "bootflag removed"
        echo "running commands post-reboot"
        #commands here
        echo "script exiting"
fi

1 Ответ

0 голосов
/ 20 июня 2020

Я наконец понял это.

Поскольку я запускал скрипт с sudo, скрипт примет относительный путь ~/.bashrc для пользователя root. Сценарий все время работал нормально, я просто смотрел на .bashr c своего пользователя и ожидал, что что-то появится, когда все время записывался файл .bashr c пользователя root.

Я использовал sudo внутри скрипта для всех команд с повышенными правами и запускал скрипт в обычном режиме без sudo, и вот он, работает, как ожидалось.

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

Спасибо всем, что нашли время ответить и помочь, я очень ценю это.

...