![Bash 脚本的子 shell](https://linux22.com/image/102542/Bash%20%E8%84%9A%E6%9C%AC%E7%9A%84%E5%AD%90%20shell%20.png)
子 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 脚本内的一组命令,由于被括号括起来,这些命令在单独的进程空间中执行。您在这里提到的软件类型最好描述为交互式安装脚本。