2010-10-08 181 views
0

爲什麼有些命令需要回聲語句,但其他人可以簡單地未經書面:bash腳本編寫shell命令

#!/bin/bash

aptitude upgrade

echo "mysql-server-5.1 mysql-server/root_password password $DB_PASSWORD" | debconf-set-selections

回答

2

,關於標準輸入飼料命令對於某些需要處理的輸入,通常由echo命令提供。 Echo轉儲提供給stdout的字符串,而stdin則使用管道「|」在stdin上重複。 因此,對於不需要stdin輸入或使用其他輸入方法進行處理的命令,無需使用echo命令即可編寫。

1

aptitude upgradeupgrade是​​程序的一個參數。如果你在屏幕上看到輸出,這意味着內在的能力,它做一些「回聲」的標準輸出。

程序也可以通過管道「|」寫入stdin,就像在第二種情況下一樣。例如,在Python一個程序,它在標準輸入,

import fileinput 
for line in fileinput.input(): 
    print line 

,並採取在參數

import sys 
file = sys.argv[1] 

這些2的組合將使得能夠利用在標準輸入或自變量的程序。這將是如何實現aptitutedebconf-set-selections,具體取決於其構建的語言。