2014-09-29 103 views
0

我想创建这个小脚本,基本上重新创建我每次使用的步骤,我开始一个新的ubuntu机器并在其上安装一些python项目。脚本停止。当我切换到postgres用户时。它从来没有运行psql命令为什么我的shell脚本在更改用户后退出?

pip install --upgrade pip 
sudo pip install virtualenv 
useradd -m -p $2 $1 
sudo -i -u postgres 
psql -c "CREATE DATABASE $1;" 
psql -c "CREATE USER $1 WITH PASSWORD '$2';" 
psql -c "GRANT ALL PRIVILEGES ON DATABASE $1 to $1;" 

我大概吸庆典的脚本,我试图变得更好。

回答

2

当您运行

sudo -i -u postgres 

一个壳催生了命令。如果此时键入exit,则此新外壳将退出,并且原始外壳将继续运行psql命令(但不是postgres用户)。

您可以执行以下操作来解决这个问题:

sudo -u postgres psql -c "CREATE DATABASE $1;" 
sudo -u postgres psql -c "CREATE USER $1 WITH PASSWORD '$2';" 
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $1 to $1;" 
相关问题