linux spawn命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux spawn命令相关的知识,希望对你有一定的参考价值。

运行RunTest test.exp之后,会报错 invalid command name "spawn",但是在/usr/local/bin/目录下执行./expect后使用spawn却可以成功,并且,我明明在脚本里面已经指明了expect的路径啊,为什么脚本会报错呢,在线等,谢谢

spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。

如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,用户无法找到一个dir.com或dir.exe的可执行文件。它主要的功能是给运行进程加个壳,用来传递交互指令。

扩展资料:

下面是一个能用来实现自动执行该命令的Expect脚本:

#!/usr/bin/expect

# Change a login shell to tcsh

set user [lindex $argv 0]

spawn chsh $user

expect "]:"

send "/bin/tcsh "

expect eof

exit

和其他脚本一样首行指定用来执行该脚本的命令程序,这里是/usr/bin/expect。程序第一行用来获得脚本的执行参数(其保存在数组$argv中,从0号开始是参数),并将其保存到变量user中。

第二个参数使用Expect的spawn命令来启动脚本和命令的会话,这里启动的是chsh命令,实际上命令是以衍生子进程的方式来运行的。

参考资料来源:百度百科-SPAWN (Expect编程工具语言)

参考技术A spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。
如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com或dir.exe的可执行文件。它主要的功能是给运行进程加个壳,用来传递交互指令。
参考技术B 你的命令错了 参考技术C 用whereis expect查一下expect命令到底在哪,将对应的exp文件修正。
或者使用#!/usr/bin/env expect本回答被提问者采纳
参考技术D 是不是环境变量不对,你看一下你的环境变量里面有没有/usr/local/bin

以上是关于linux spawn命令的主要内容,如果未能解决你的问题,请参考以下文章

linux expect安装后使用有问题,expect正常,但是send和spawn提示找不到命令

用spawn 来编写跨平台 Node.js命令

Nodejs.调用Linux命令

linux expect命令使用入门

Linux expect

linux expect