Bash 脚本的子 shell

Bash 脚本的子 shell

子 shell 命令必须在 bash 脚本中自动执行。

它会自动运行,然后在 bash 中执行子 shell,但它需要人工交互,我想在 bash 脚本中自动执行它。

我的主要 Bash 脚本命令列表:

#!/bin/sh
#
****some-commands****
askbot-setup;

子shell执行

Deploying Askbot - Django Q&A forum application
Problems installing? -> please email [email protected]

To CANCEL - hit Ctr-C at any time

Enter directory path (absolute or relative) to deploy
askbot. To choose current directory - enter "."
> .

Please select database engine:
1 - for postgresql, 2 - for sqlite, 3 - for mysql, 4 - oracle
type 1/2/3/4: 3

Please enter database name (required)
> askbotdb

Please enter database user (required)
> askbotuser

Please enter database password (required)
> askbotpasswords

Copying files:
* __init__.py
* manage.py
* urls.py
* django.wsgi
Creating settings file
settings file created

我想在 myshell 脚本中自动执行给定的命令,以便它可以在没有人工交互的情况下运行。

.
3
askbotdb
askbotuser
askbotpasswords

askbot-setup那么在Bash 脚本的命令之后,我的子 shell 的命令是什么?

答案1

我首先查看askbot 文档,并检查askbot-setup 是否可以从命令行或通过某种形式的答案文件获取答案。

如果所有其他方法都失败,您可以使用 autoexpect(1) 创建一个 Expect(1) 脚本来模拟与askbot-setup 的手动交互。

为了避免术语混淆,“子 shell”通常是指 shell 脚本内的一组命令,由于被括号括起来,这些命令在单独的进程空间中执行。您在这里提到的软件类型最好描述为交互式安装脚本。

相关内容