Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 我可以在同一个脚本中获得ksh和expect吗?_Unix_Ksh_Expect - Fatal编程技术网

Unix 我可以在同一个脚本中获得ksh和expect吗?

Unix 我可以在同一个脚本中获得ksh和expect吗?,unix,ksh,expect,Unix,Ksh,Expect,我试图在同一个脚本中使用ksh和expect命令设置的环境变量。然而,如果我试图同时获取这两种资源,它就不起作用了。有没有办法在同一个脚本中获取ksh和expect的源代码?在Korn shell中,您可以在另一个脚本中添加点,例如: . ${other_script} 这将在与父脚本相同的进程中运行。另一个脚本可以看到父脚本中定义的任何变量。如果您想使用子shell(运行外部命令),则需要首先导出任何变量 如果希望引用expect脚本中的环境变量(由在子shell中运行expect的ks

我试图在同一个脚本中使用ksh和expect命令设置的环境变量。然而,如果我试图同时获取这两种资源,它就不起作用了。有没有办法在同一个脚本中获取ksh和expect的源代码?

在Korn shell中,您可以在另一个脚本中添加点,例如:

. ${other_script}  
这将在与父脚本相同的进程中运行。另一个脚本可以看到父脚本中定义的任何变量。如果您想使用子shell(运行外部命令),则需要首先导出任何变量

如果希望引用expect脚本中的环境变量(由在子shell中运行expect的ksh脚本导出的变量),则expect脚本需要引用全局数组
env
。例如,如果您的ksh脚本导出MYPATH变量,则expect可能引用
$env(MYPATH)

执行以下操作

#!/usr/bin/ksh

. /path/to/ksh_stuff.sh
export FOO=bar

# other ksh stuff

expect <<'END_EXPECT'
    source /path/to/expect_stuff.exp
    send_user "FOO is $env(FOO)\n"
    # other expect stuff
END_EXPECT
#/usr/bin/ksh
. /路径/to/ksh_stuff.sh
导出FOO=bar
#其他ksh材料

期望,但是其他脚本也会在KSH中运行,不是吗?这与目的背道而驰,因为第二个脚本在获取KSH时无法识别EXPECT命令问题是我需要在EXPECT脚本中使用KSH中设置的环境变量。我可以将这些作为参数传递吗?更新了参考答案expect$env Array请看一看,以帮助解释您的问题