我有这样一个 bash 脚本:
#!/bin/bash
cd /home/user/projekt
git config core.sparseCheckout true
git pull origin master
wait
rm -rf /var/www/project/{client,public}
cp -r /home/user/project-checkout/project/dist/* /var/www/project/
cd /var/www/project/
npm install
由于我必须以提升的权限运行copy
和npm install
命令,因此我使用sudo
.
但是 -git pull
不能像 sudo 一样工作,因为它从用户.gitconfig
和.sshconfig
文件中读取。在执行操作时,IT 会按预期显示“请确保您拥有正确的访问权限”git sudo
怎么解决?我在想,在剧本中,为了获得一项赞扬,可能会取消提升权利吗?
作为奖励,我如何告诉我的脚本仅在第 3 行成功完成后继续执行?
答案1
您只能sudo
在必要时才可以降低高度,而不是降低高度;所以在你的脚本中:
...
sudo cp ...
cd /var/www/project
sudo npm install
您可以使用
set -e
wait
在脚本开始时导致任何错误停止脚本,这将在第 3 行产生预期的效果。但我不确定为什么你需要那里;git pull
只有在工作完成后才会返回。
答案2
看看这个要点,有多种方法可以做到这一点......当我遇到同样的问题时,第一个方法效果最好。关联
您还可以添加设置-x查看您的脚本的实际效果。