Shell-Script

Bash 腳本的子shell

  • November 16, 2018

子 shell 命令必須在 bash 腳本中自動執行。

它會自動執行,然後在 bash 中執行子 shell,但它需要人工互動我想在我的 bash 腳本中自動執行它。

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

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

子shell執行

Deploying Askbot - Django Q&A forum application
Problems installing? -> please email admin@askbot.org

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-setupBash 腳本的命令之後,我的子 shell 的上述命令是什麼命令。

我會先查看 askbot 文件並檢查 askbot-setup 是否可以從命令行或通過某種形式的答案文件獲得答案。

如果一切都失敗了,您可以使用 autoexpect(1) 創建一個 expect(1) 腳本來模擬您與 askbot-setup 的手動互動。

只是為了避免術語混淆 - “子shell”通常是指 shell 腳本中的一組命令,這些命令由於被括號包圍而在單獨的程序空間中執行。您在這裡所指的那種軟體最好被描述為互動式安裝腳本。

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