在linux應用程序使用system函數執行簡單的shell交互命令的方法

例如:

system(“tftp <<EOO\n\nquit\n\nEOO”);

“ <<EOO EOO” :  這個是here document ,就是一段特殊目的的代碼塊.   他使用 I/O 重定向的形式來將一個命令序列傳遞 到一個交互程序或者命令中,  比如 ftp, cat, 或者vim文本編輯器.  “<<EOO”是開始,“E00”爲結束,它們必須成對出現,  “EOO”可以改爲任何非shell命令的字符串


“quit” :這就是tftp中的命令,實際上"<<EOO" "EOO"之間可以執行任何tftp命令了,即可以進行簡單的交互,  若要進行更復雜的交互,可以使用expect交互腳本語言


“\n ” :表示回車,這是因爲在代碼中,所以“\n”表示回車,  若在bash中執行tftp <<EOO\n\nquit\n\nEOO是不成功的,  因爲在shell中無法敲出回車換行符,但可以用以下的方法進行執行:

            1. echo -e "tftp\nquit\n" | /bin/bash   這裏使用了echo的轉義字符進行轉換回車換行

             2. tftp < file.txt         將file.txt當做tftp的標準輸入, file.txt的內容是: quit





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章