Linux腳本中使用管道為shell命令自動輸入參數
Meego的開發環境現在還是只能在Linux下進行,而每次要啟動模擬器都得輸入一大堆指令,實在是太麻煩了,於是想到自己寫一個啟動腳本不就好了麼,但是寫shell的時候卻遇到一些問題:
1. 有些指令需要管理員許可權,即sudo指令執行時需要輸入管理員密碼,我希望能在腳本中自動執行,即讓腳本為我們自動輸入密碼;
2. 模擬器是另一個shell環境了,就跟SQL一樣,執行mysql -u root -p進入SQL之後,將”show databases “這種指令直接寫到腳本中是不會執行的,因為這個時候終端的解釋許可權已經轉移,那麼,怎麼把這時的指令自動寫入到類似SQL的命令終端裡呢?
對於這兩個問題,有一個比較簡單的解決方案,那就是管道。
管道其實是一種重定向技術,Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續使用管道意味著第一個命令的輸出會作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。
現在,我們先來看看如何使用管道來為我們自動輸入密碼:
echo 123456 | sudo -S command
這裡有兩條指令,前面一條是輸出123456(假設這就是你的密碼),而後面的指令就是取得管理員許可權,它會提示你輸入密碼。這裡由於採用管道提示符,自動的將前面的密碼輸入給第二條指令,所以現在你就自動完成了密碼的輸入任務啦。用這種方式雖然密碼是明文存在腳本中,不太安全,但是勝在方法簡單。
然後,對第二種情況,同樣採用管道命令:
echo ‘show database’ | mysql -u root -p ***
這裡就自動的將show database輸入到進入SQL後的新的命令提示符後面,這條命令現在是可以自動執行了的。