linux - 可以期望产生一个 bash 函数吗?

标签 linux bash function tcl expect

这是一个非常简单的例子:

# expect -c "spawn socat -v -,raw,echo=0,nonblock /dev/ttyS0; interact"

expect 执行内联脚本,生成 socat 以连接到 serial 设备。但是,如果我们有一个名为 serial 的 bash 函数(这非常方便)怎么办:

# serial(){ socat -v -,raw,echo=0,nonblock /dev/ttyS0;}
# expect -c "spawn serial; interact"
spawn serial
couldn't execute "serial": no such file or directory
    while executing
"spawn serial"

是否可以在没有包装脚本或二进制文件的情况下强制 expect 执行函数?

最佳答案

您可以导出 shell 函数,以便新的spawned shell 可以调用它。例如:

% cat foo.sh
the_func()
{
    echo hello world
}
export -f the_func

expect -c "spawn bash -c the_func; interact"
% bash foo.sh
spawn bash -c the_func
hello world
%

关于linux - 可以期望产生一个 bash 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127538/

相关文章:

MySQL命令行 '-bash command not found'

linux - 如何确定 USB 设备的 IRQ 号?

PHP:mysql_connect() 返回 true 但 mysql_select_db() 返回 false _ 在 Ubuntu 更新后

linux - 在 Linux 中打印特定文本行的单个部分

php - 我需要 mysql 表中最接近的较小值

c++ - 在 C 中的另一个函数的输入中定义一个函数

javascript - 如何在函数中访问父对象的变量

linux - 使用 bash 迭代排序和就地替换文件

linux - 退出 bash 脚本但不退出终端的任何方式

bash - pyenv - 环境 "activated",但未找到 python 和 pip