我正在尝试执行for循环,以便从预期脚本内的ls输出中读取每个文件。
/usr/bin/expect << 'EOF'
set timeout -1
spawn ssh root@server
expect {
"*assword: "
}
send "_t00rhs!r"
expect {
"*]# "
}
send 'for item in "$(ls)" do sort -k1 -n ${item}; done r'
expect {
"*]# "
}
输出显示它还没有得到item的值。
]0;root@atddpvm13:~[?1034h[root@atddpvm13 ~]# can't read "item": no such
variable
while executing
"send 'for item in "$(ls)" do sort -k1 -n ${item}"
从预期方面来看:
- 单引号在expect中没有特殊含义
- 使用大括号进行非内插引用
- 但是
r
序列不会用大括号来解释
所以你得到
send {for item in $(ls); do sort -k1 -n "$item"; done}
send "r"
来自壳程
- 不解析
ls
- 不要使用
for
迭代行
您想要
send "printf '%sn' * | sort -k1 -nr"
# or
send "ls -1vr"