我對 bash 腳本編寫沒有太多經驗。我在這裡嘗試做的事情可能並不複雜,但我只是遇到了一些問題。
所以我有一個 C 腳本,我必須使用它來運行大約 70,000 個檔案。該腳本調用了某些輸入,讓我一一輸入。例如,它提示我連續輸入 7 次(y/n)表示是或否。例如,如果我在一個文件上運行腳本,它會提示我輸入“是”或“否”,然後是多個提示詢問(y/n)。在本例中,有 7 個 y/n 提示。然後它會繼續提示我在提示時輸入的其他幾個參數,例如 c 表示繼續,100 表示百分比等。
所有 70,000 個檔案的所有這些參數都是相同的。我想知道是否有人可以指導我在出現提示後如何將所有這些參數傳遞給 bash 腳本。非常基本,但這是我到目前為止所擁有的:
var='testdir/*'
for i in var; do
/script $i
done
上面的 bash 命令呼叫腳本,但提示我輸入每個檔案的所有這些參數。注意:我無法操作底層腳本。
答案1
這是一份工作expect
。
假設您的 C 程式輸出類似於以下的內容:
question 1? (y/n):
question 2? (y/n):
enter some percent value:
bunch of stuff
confirm? (y/n):
您可以編寫一個預期腳本,例如:
#!/usr/bin/expect
foreach file [glob /path/to/70k/files/*] {
spawn "/path/to/c_prog" $file
expect "question 1? (y/n): " { send "y\r" }
expect "question 2? (y/n): " { send "n\r" }
expect "enter some percent value: " { send "100\r" }
expect "confirm? (y/n): " { send "y\r" }
interact
}
然後chmod +x
編寫腳本並運行它,或者expect /path/to/script