如何在 bash 脚本中执行此命令
#!/bin/bash
docker exec -ti test psql db db
drop schema if exists stack cascade;
delete from partman.part_config;
\q
pwd
cd /folder/name
答案1
要将脚本中的行发送到程序的输入,您应该使用“here doc”。在此示例中,它结束于EOD
#!/bin/bash
docker exec test psql db db << 'EOD'
drop schema if exists stack cascade;
delete from partman.part_config;
\q
EOD
pwd
cd /folder/name
然后您可以像以前一样继续执行脚本。
chmod a+rx theScript # Make the script executable
./theScript # Run it
但是,如果您将其作为真正的脚本运行,则最后一个cd
脚本几乎没有什么用处,因为它无法更改调用进程(您的 shell)的目录。
StackExchange 上有很多解决方案,但一般的方法是必须cd
在当前进程上下文中运行。您可以通过运行脚本来做到这一点点:
. theScript # Source the script