linux - 如何使用 shell 命令的输出设置期望变量

标签 linux bash shell variables expect

我想在 expect 文件中设置一个变量 b,最初我通过这个脚本通过 ssh 连接到一台机器,在那台机器上我想获取一个值并使用以下命令设置 expect 变量:

set b [exec `cat /home/a |grep "work"|awk -F '=' '{print $2}'`]


send_user "$b"

文件/home/a 具有以下结构:

home=10.10.10.1

work=10.20.10.1

我试图在打印后使用变量 b 但在执行 ssh 脚本后,它给出了:

无法读取“2”:没有这样的变量

while executing

如果我将此输出放在该机器的文件名 temp 中并尝试执行:

设置 b [exec cat ./temp]

然后它也给出:

cat: ./temp: 没有那个文件或目录

如果我确实发送“cat ./temp”,它会打印出正确的输出。

请让我知道哪里出错了。

最佳答案

单引号不是 Tcl 的引用机制,所以请将您的 awk 表达式括起来。

% set b [exec cat /home/a | grep "work" | awk -F {=} {{print $2}}]
10.20.10.1

引用: Frequently Made Mistakes in Tcl

关于linux - 如何使用 shell 命令的输出设置期望变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35968746/

相关文章:

bash - 已经通过 ssh 登录到服务器后如何传输文件?

linux - Bash 不会在嵌套脚本中创建文件

windows - Sublime Text 2、Windows、bash/cygwin 而不是 cmd

linux - 如何记录所有正在运行的进程的数据以用于调度程序模拟?

linux - RHEL - 有限的 root 访问权限

linux - 在两个 bash 脚本中覆盖一个变量

php exec 和 shell_exec 不工作

c++ - 如何制作更高级别的并行代码/脚本?

linux - 如何在尽可能精简的 lxc 容器中运行实用程序

linux - 结束 perl 脚本而不等待系统调用返回