【发布时间】:2014-12-16 17:34:55
【问题描述】:
我有一个期望脚本,它是 bash 脚本的包装器,它是 scp 的包装器。 :)
基本上,我会这样调用我的 bash 脚本。
myscp host /path filenames
这会要求我在主机上输入 root 密码。而且,我厌倦了一直输入root。 host 是带有 ramdisk 的测试机器,所以我无法在 host 上设置 ssh。所以我玩过 expect ,我认为它会完成这项工作。
无论如何,我可以像这样在我的期望脚本中挑选位置参数:
#!/usr/bin/expect -f
set host [lindex $argv 0];
set path [lindex $argv 1];
#but how to get filenames??
[...]
spawn myscp $host $path $filenames
到目前为止,我已经尝试过设置文件名 [lrange $argv 2 end],但这只会导致一个参数包含所有带有空格分隔符的文件名。
无论如何,我基本上想将“$@”传递给 myscp。或者甚至不那么雄心勃勃,$@ 假设文件名中没有空格。
我会怎么做?
谢谢。
【问题讨论】:
-
顺便说一句,我实际上建议将其标记为 tcl 问题而不是 bash 问题,因为这里期望使用 tcl 语法;熟悉 bash 并没有能力回答它。
标签: bash command-line tcl expect argv