首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >期望:如何获取要发送的报价

期望:如何获取要发送的报价
EN

Stack Overflow用户
提问于 2020-03-06 01:31:31
回答 3查看 167关注 0票数 0

在我的下面的脚本中,我希望从派生得到的输出是

代码语言:javascript
复制
ovirt-aaa-jdbc-tool user password-reset user--password-valid-to="2025-09-15 10:30:00Z"

但它忽略了引号,给了我

代码语言:javascript
复制
ovirt-aaa-jdbc-tool user password-reset user--password-valid-to=2025-09-15 10:30:00Z

我尝试了几种不同的方法,转义引号等,但没有乐趣。下面的代码

代码语言:javascript
复制
#!/usr/bin/expect

set password [lindex $argv 0]
set username [lindex $argv 1]
set valid_to "2025-09-15 10:30:00Z"
set timeout -1


spawn ovirt-aaa-jdbc-tool user password-reset $username --password-valid-to=$valid_to
expect -re {(?n)^Password.*}
send "$password\n"
expect -re {(?n)^Reenter password.*}
send "$password\n"
expect -re {(?n)^user updated successfully.*}
send "history > his && echo hi\n"
expect -re {(?n)^#*}
send "whoami\n"
expect -re {(?n)^#*}
expect eof
EN

回答 3

Stack Overflow用户

发布于 2020-03-06 18:16:05

你可能曲解了你所看到的。Expect不会在空格上拆分变量中的字符串。下面这个简单的shell脚本只打印用">...<“括起来的每个参数。

代码语言:javascript
复制
cat >mytest <<\!
#!/bin/bash
for arg;do echo -n " >$arg<"; done; echo
!
chmod +x mytest

我们从expect运行它,使用一个保存空格的变量:

代码语言:javascript
复制
expect -f - <<\!
set myvar "a   b"
spawn ./mytest v=$myvar
expect eof
!

这是输出:

代码语言:javascript
复制
spawn ./mytest v=a   b
 >v=a   b<

尽管expect输出的spawn命令的回显似乎表明mytest有两个参数,即v=ab,但实际上shell脚本只有一个参数v=a b

这表明您的脚本的第一部分可能是正确的,您应该在其他地方寻找问题。(注意,这里有一个ovirt-aaa-jdbc-tool命令here的示例,它与您正在做的事情相匹配。它有"",因为它是从shell运行的,这将删除这些引号,而不是在空格上拆分。)

票数 1
EN

Stack Overflow用户

发布于 2020-03-06 06:25:58

您还可以在双引号中转义双引号:

代码语言:javascript
复制
set valid_to "\"2025-09-15 10:30:00Z\""
票数 0
EN

Stack Overflow用户

发布于 2020-03-06 03:01:10

用单引号将日期括起来应该是可行的:

代码语言:javascript
复制
set valid_to "'2025-09-15 10:30:00Z'"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60551034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档