我是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文件夹。但无论我在哪里试用它,文件最后仍然是空的。
答案 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!"