2013-10-13 228 views
0

我有一個bash腳本填寫輸入數據,a.sh調用bash腳本,並從另一個bash腳本

當我運行a.sh,我需要填寫幾個讀。比方說,像這樣

./a.sh 
Please input a comment for script usage 
test (I need to type this line mannually when running the script a.sh, and type "enter" to continue) 

現在我叫a.sh在我的新的腳本b.sh.我可以讓b.sh自動填寫「測試」字符串嗎?

還有一個問題,a.sh擁有大量打印到控制檯的問題,我可以通過在b.sh中執行某些操作而不更改a.sh來將打印從a.sh中靜音?

謝謝。

回答

1

在廣泛的範圍內,您可以讓一個腳本爲其他腳本提供標準輸入。

但是,即使您看不到滿足這些提示的任何內容,您仍可能會看到提示。那看起來很糟糕。另外,根據a.sh的作用,您可能需要它從標準輸入中讀取更多信息 - 但您必須確保腳本調用它提供正確的信息。

一般來說,儘量避免這種情況。提示輸入的腳本對自動化不利。最好通過命令行參數提供輸入。這使得您的第二個腳本b.sh很容易驅動a.sh

0

a.sh

#!/bin/bash 
read myvar 
echo "you typed ${myvar}" 

b.sh

#!/bin/bash 
echo "hello world" 

可以在2種方法做到這一點:

$ ./b.sh | ./a.sh 
you typed hello world 
$ ./a.sh <<< `./b.sh` 
you typed hello world