在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





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