如何向bash脚本传入应答和按键操作以自动化配置AWS SSO账户
问题原因
默认的echo命令不会解析\n转义字符,你传入的第三个换行实际是字面量字符串,没有被识别为回车信号,同时你原来的语句只有2个换行符,刚好对应前两次输入的确认,第三次选择role的回车信号没有被传入。
可行解决方案
- 方案1:给echo添加
-e参数开启转义解析,同时补充第三个回车对应的换行符echo -e "foo\nbar\n\n" | aws configure sso --profile baz - 方案2:使用兼容性更好的
printf命令(推荐,避免不同shell下echo实现差异导致的问题)printf "foo\nbar\n\n" | aws configure sso --profile baz - 方案3:如果管道输入因为AWS CLI检测到非TTY环境不生效,使用
expect工具模拟终端交互
编写完成后给脚本加执行权限#!/usr/bin/expect spawn aws configure sso --profile baz # 匹配第一个提示内容,可替换为你实际遇到的提示关键词 expect "SSO start URL" send "foo\r" # 匹配第二个提示内容 expect "SSO region" send "bar\r" # 匹配role选择提示 expect "role" send "\r" interactchmod +x sso_config.exp,直接运行即可。
内容的提问来源于stack exchange,提问作者clev
相关产品推荐
相关产品推荐

