首先承认我是一个脚本菜鸟,但基本上当我尝试运行的命令有双破折号时,我无法生成一个期望会话。即如下:
#!/usr/bin/expect -f
set command "mysqlimport -h mysql.someserver.amazonaws.com -P 3306 -u root --fields-enclosed-by=\"|\" -p myDBHere --local /var/www/csvuploads/tablename "
spawn {*}$command
expect "password:"
send -- "mypassword\r"
我收到一条错误消息:
mysqlimport: Error: 1083, Field separator argument is not what is expected; check the manual, when using table: INT_BRN_BRAND
现在我想我知道发生了什么。我认为双破折号被生成器拾取,然后 mysqlimport 没有设置它的字段分隔符。这与您在发送后放置“--”的原因相同。我相信这会告诉 TCL 或 Expect 给定命令没有更多选项。
真正的问题
那么如何产生一个具有 -- 标志的进程呢?
我尝试过的事情
在生成后添加双破折号。使用 \u002d 转义命令文本中的破折号使用 autoexpect 生成一个脚本来执行我想要的操作。我没有生成 mysqlimport,而是尝试生成一个新的 bash shell 并“发送 --”命令。我接近了,但遇到了一系列完全不同的问题。