【发布时间】:2020-02-19 19:25:30
【问题描述】:
我正在编写一个 bash 脚本来创建自签名证书。
脚本运行良好,直到我必须签署证书。确实,我无法让我的期望命令与收到的字符串匹配。
这是我的终端返回的字符串:
Sign the certificate? [y/n]:
这是我的命令:
/usr/bin/expect <<EOD
spawn sudo openssl ca -config CA/ca.cnf -policy policy_anything -out CA/newcerts/webserver.cert -infiles CA/certrequests/webserver.csr
expect {Enter pass phrase for ./CA/private/cakey.pem:} {send "${PEMpassword}\n"}
expect -re {Sign the certificate? [^:]*:} {send "y\n"}
expect -re {1 out of 1 certificate requests certified, commit? [^:]*:} {send "y\n"}
expect eof
EOD
我对期望和正则表达式不是很熟悉,但“[^:]*”对我来说直到现在也适用于类似的字符串。
我没有成功尝试过这些:
[?*]
\*
?:
[y/n]
\[y/n\]
"[y/n]"
[\w/\w]
[w+]
[\w+]
提前感谢您的建议!
【问题讨论】:
-
总是转义特殊的正则表达式元字符(它们在括号表达式内部或外部使用时会有所不同)。
?是您模式中的其中之一
标签: regex bash ssl openssl expect