2016-12-02 125 views
0

我想了解一些基本的shell腳本。我有一個script.sh,做了chmod,並通過執行./script.shPython Shell腳本

打亂了一些非常簡單的打印語句現在我怎麼能啓動顯示包含當前工作目錄的提示符的shell,應該接受一行輸入並每次顯示提示?

總之我迄今瞭解的工具:os.getcwd()sys.stdin.readlines()subprocess.Popen(['ls'], stdout=subproccess.PIPE)

這是我到目前爲止所。

#!/usr/bin/env python 
import os 
import sys 
import subprocess 

proc = subprocess.Popen(['ls'], stdout=subprocess.PIPE) 
cwd = os.getcwd() 
while True: 
user_input = raw_input(str(cwd) + " >> ") 
    if user_input == 'ls': 
     print proc 
    if not foo: 
     sys.exit() 

所以這似乎工作。至少命令提示符部分不退出。

+3

你使用Python來執行shell腳本(sh,bash等)嗎?你是否試圖從Python或shell腳本提示用戶?這是一個詢問Python代碼或shell腳本(sh,bash等)代碼的問題嗎? – e0k

+0

我很困惑,懶得回答所有可能的選項嘿嘿:-) –

+0

我想創建一個python shell並試圖從腳本提示用戶。用戶應該能夠輸入一個沒有參數的命令,例如ls。 shell將啓動它,阻塞直到它完成,然後恢復。如果該命令以非零退出狀態碼退出,則向用戶顯示一條消息。 –

回答

1

如果您想提示用戶,那麼您可能不希望使用sys.stdin.readlines(),因爲在每行之後沒有簡單的方法來提示您。相反,使用input()(或Python 2上的raw_input())。

user_input = input("My prompt text> ") 

然後用戶的輸入將被存儲在一個字符串中user_input。把它放在while循環中,你可以重複顯示它,就像常規的命令提示符一樣。

+0

基本上,'而user_input:'?我認爲這有很大的幫助 –

+0

如果你願意,你可以做到這一點。你只需確保在循環開始之前設置'user_input'。 – user3030010