Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
在bash上下文中需要set变量_Bash_Shell_Tcl_Expect - Fatal编程技术网

在bash上下文中需要set变量

在bash上下文中需要set变量,bash,shell,tcl,expect,Bash,Shell,Tcl,Expect,您知道是否可以在封装在bash脚本中的expect脚本中分配和打印expect变量吗。好的,这还不清楚,我知道,让我们看看下面的例子: #!/bin/bash ..some bash code.. /usr/bin/expect << EOF set hello "abcd" puts "$hello" exit EOF Expect工作得很好,就像我尝试做的那样:放上“abcd”并打印出来 lionel@pc:~$ ./call_to_bash_script.sh

您知道是否可以在封装在bash脚本中的expect脚本中分配和打印expect变量吗。好的,这还不清楚,我知道,让我们看看下面的例子:

#!/bin/bash

..some bash code..

/usr/bin/expect << EOF
  set hello "abcd"
  puts "$hello"
  exit
EOF
Expect工作得很好,就像我尝试做的那样:放上“abcd”并打印出来

lionel@pc:~$ ./call_to_bash_script.sh
abcd  
lionel@pc:~$

Heredocs扩展bash变量引用。在expect有机会看到它之前,Bash正在扩展
$hello
。您可以通过引用
EOF
分隔符禁用变量扩展,如下所示:

/usr/bin/expect << 'EOF'
  set hello "abcd"
  puts "$hello"
  exit
EOF

/usr/bin/expectherdocs展开bash变量引用。在expect有机会看到它之前,Bash正在扩展
$hello
。您可以通过引用
EOF
分隔符禁用变量扩展,如下所示:

/usr/bin/expect << 'EOF'
  set hello "abcd"
  puts "$hello"
  exit
EOF

/usr/bin/expect如果将
设置为hello“abcd”
放在
expect
呼叫之前<代码>如果我像那样放在herdoc前面:/usr/bin/expect set hello“abcd”我应该更清楚,对不起。
没问题;)我尝试了你的建议,但没有效果:“(@kenny,你在这里走错了方向。
设置hello abcd
属于expect代码,因此在heredoc中。在bash中,
设置hello abcd
$1
设置为“hello”,将
$2
设置为“abcd”,如果你将
设置hello”abcd”
expect
调用之前?
如果我像那样放在herdoc前面:/usr/bin/expect set hello“abcd”我应该说得更清楚,对不起。
没问题;)我尝试了你的建议,但没用:'(@kenny,你走错了方向。
设置hello abcd
属于预期代码,因此在heredoc中。在bash中,
设置hello abcd
$1
设置为“hello”,将
$2
设置为“abcd”
/usr/bin/expect << EOF
  set hello "abcd"
  puts "\$hello"
  exit
EOF