shell - 如果我在脚本中导入,则无法使用 echo 命令
问题描述
我想在我的脚本中使用 expect 方法,所以我在脚本中使用了这个命令
#!/usr/bin/expect
现在我无法在使用此命令后声明任何数组甚至无法使用 echo 命令
完整代码
#!/usr/bin/expect
declare -a arr=("ip1" "ip2")
for i in "${arr[@]}"
do
spawn ssh myhost@i
send "exit\n"
done
整个数组声明和 for 循环会引发错误,例如无效的命令名称,我无法使用 echo 命令。当我在不导入的情况下尝试 echo 命令时,除了一切都按预期工作。
解决方案
第一行声明您的脚本是一个expect 脚本并且expect 脚本使用Tcl 脚本语言。您所做的是在同一个脚本中混合 bash 和 Tcl,这就是错误消息的原因。在 Tcl 中设置一个列表并循环很容易:
#!/usr/bin/expect
set arr {ip1 ip2}
foreach i $arr {
spawn ssh myhost@$i
send "exit\r"
}
推荐阅读
- c# - 搜索 GridView 以设置 PageIndex
- python - Python 通过 Tor 连接到 IRC
- jasmine - 如何检查是否在 Jasmine 中使用真值(不是未定义)调用了函数?
- jquery - 如何在 mysql 查询中使用变量?
- python-3.x - 如果满足特定条件,熊猫就会应用价值
- ruby-on-rails - Rails: Webpacker::Manifest::MissingEntryError in Home#index
- java - 如何在纯 Java 控制台应用程序中获取令牌?
- databricks - 如何使用完成编写 databricks 作业的脚本
- fabricjs - 单击它覆盖整个画布的文本对象
- javascript - dataTables.js 与 fileInput.js 冲突