如何在bash中执行正在运行的命令中的命令

如何在bash中执行正在运行的命令中的命令

如何在 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

相关内容