bash shell脚本:写入文件不起作用

时间:2017-07-18 00:56:40

标签: bash shell ubuntu

我是shell脚本的新手,我正在尝试将我的字符串变量的内容写入文件。当我在使用变量写入文件之前回显变量时,它运行良好。但是当脚本完成时,文件没有更新。

我的代码是:

    echo $str
    touch $HOME/Documents/config.txt
    sudo chmod u+w $HOME/Documents/config.txt
    echo "$str" >> sudo $HOME/Documents/config.txt
    sudo cp sudo $HOME/Documents/config.txt $HOME/.ssh/
    echo $str
    echo "configuration file updated!"

我尝试过给它写入权限,以及写入文件的不同方式。我还想早些时候,.ssh文件夹是我的问题的根源,所以你可以看到,我首先尝试将文件写在其他地方,然后尝试将其移动到.ssh文件夹。但无论我在哪里试用它,文件最后仍然是空的。

2 个答案:

答案 0 :(得分:1)

从此处删除sudo

echo "$str" >> sudo $HOME/Documents/config.txt

您将echo的输出传输到文件中。 sudo用于运行具有root权限的命令。

如果您对该文件没有写入权限:How do I use sudo to redirect output to a location I don't have permission to write to?

答案 1 :(得分:1)

由于您touch编辑了该文档,因此它属于您。这意味着您根本不必使用sudo。您必须从脚本中删除sudo的所有痕迹。

echo $str
touch $HOME/Documents/config.txt
chmod u+w $HOME/Documents/config.txt
echo "$str" >> $HOME/Documents/config.txt
cp $HOME/Documents/config.txt $HOME/.ssh/
echo $str
echo "configuration file updated!"