无法使用脚本写入文件

时间:2020-06-19 16:15:48

标签: linux bash ubuntu sh

我编写了一个脚本,该脚本应该运行一些命令,重新启动我的ubuntu服务器,然后在服务器启动后,恢复操作,并从bash文件中删除该条目。

我已经尝试了几个小时,以弄清楚为什么我的脚本无法写入.bashrc(或与此有关的任何文件)。单独测试命令效果很好。但是,通过我的脚本运行时,不会将任何内容写入文件。在这一点上,我很沮丧,真的很想换一双眼睛,因为我确信原因很愚蠢,可能是我缺少的东西。这将是我的第一个脚本,因此如果这最终成为一个愚蠢的问题,我们感到抱歉。我在注释中加上了“ 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 :(得分:0)

我终于想通了。

因为我使用sudo运行脚本,所以脚本将采用root用户的相对路径~/.bashrc。脚本一直运行良好,我一直在查看用户的.bashrc,并期望在写入根用户的.bashrc文件时一切都会出现。

我在所有提升的命令中都使用了sudo 内部脚本,并在没有sudo的情况下正常运行了脚本,并且脚本可以正常运行。

正如我认为的那样,这毕竟是愚蠢的。至少我今天学到了一些东西。

感谢大家抽出宝贵的时间来答复和帮助,我真的很感激。