Linux

如何在bash中正在執行的命令中執行命令

  • December 29, 2021

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

要將腳本中的行發送到程序的輸入,您應該使用“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必須在目前程序上下文中執行。您可以通過dot執行腳本來做到這一點:

. theScript             # Source the script

引用自:https://unix.stackexchange.com/questions/684225