使用;“询问对话”;命令立即通过Bash命令传递文本

使用;“询问对话”;命令立即通过Bash命令传递文本,bash,shell,command-line,terminal,ask-cli,Bash,Shell,Command Line,Terminal,Ask Cli,我想使用“询问对话框”命令立即传递问题。我正在尝试自动化启动终端和运行“询问对话框”的过程。每当我的bash脚本运行时,它会在Alexa实例打开后暂停 #!/bin/bash/ cd /Users/AlexaDirectory/ ask dialog #this is where I need to ask Alexa a question automatically. #I have tried running "ask dialog && (insert que

我想使用“询问对话框”命令立即传递问题。我正在尝试自动化启动终端和运行“询问对话框”的过程。每当我的bash脚本运行时,它会在Alexa实例打开后暂停

#!/bin/bash/
cd /Users/AlexaDirectory/
ask dialog 
#this is where I need to ask Alexa a question automatically. 
#I have tried running "ask dialog && (insert question)", but the script pauses once it reaches "ask dialog"
echo "end"
下面是我在运行.sh时通常看到的内容

MacBook-Pro Desktop % bash Test.command
Defaulting locale to the first value from the skill manifest: en-US

======================================= Welcome to ASK Dialog =======================================
=========== In interactive mode, type your utterance text onto the console and hit enter ============
===================== Alexa will then evaluate your input and give a response! ======================
=== Use ".record <fileName>" or ".record <fileName> --append-quit" to save list of utterances to a file. ===
=============== You can exit the interactive mode by entering ".quit" or "ctrl + c". ================

User  > 
MacBook Pro桌面%bash Test.command
将区域设置默认为技能清单中的第一个值:en US
================================================================欢迎使用询问对话框=======================================
============在交互模式下,在控制台上键入您的话语文本,然后按enter键============
====================================Alexa随后将评估您的输入并给出响应======================
==使用“.record”或“.record--append quit”将话语列表保存到文件中===
===============您可以通过输入“.quit”或“ctrl+c”退出交互模式================
用户>

如果无法立即传递问题,是否可以向终端发送击键?

在Charles Duffy的帮助下,使用herestring就是答案


调用
ask对话框
时,进程冻结,修复程序在Charles Duffy的帮助下发送
ask对话框,使用一个字符串作为答案

调用
ask对话框
时,进程冻结,修复程序正在发送
ask对话框,您可以尝试使用。我一直在努力解决类似的问题。在非交互模式下运行
ask init
。最后我就这样解决了

echo'#/usr/bin/expect
产卵询问初始化
预期”?技能Id(保留为空以创建一个):
发送“我的技能”\r\n
预期“?技能包路径:”
发送“/path/to/skill package\r”
默认区域应为“”Lambda代码路径(保留为空以不部署Lambda):“
发送“/path/to/lampda包\r”
“>询问_init.sh
chmod u+x ask_init.sh
//问_init.sh
仅供参考,我还尝试使用
|
echo
的组合对其进行管道式回答,如下所示:

echo'量子技能
/路径/目标/技能包
./path/to/lampda包
|问问它
使用
printf
,如下所示:

printf'quantum skill\n./path/to/skill package\n./path/to/lambda package\n'|询问初始化
后者都不起作用。因此,我建议使用
expect

您可以尝试使用。我一直在努力解决类似的问题。在非交互模式下运行
ask init
。最后我就这样解决了

echo'#/usr/bin/expect
产卵询问初始化
预期”?技能Id(保留为空以创建一个):
发送“我的技能”\r\n
预期“?技能包路径:”
发送“/path/to/skill package\r”
默认区域应为“”Lambda代码路径(保留为空以不部署Lambda):“
发送“/path/to/lampda包\r”
“>询问_init.sh
chmod u+x ask_init.sh
//问_init.sh
仅供参考,我还尝试使用
|
echo
的组合对其进行管道式回答,如下所示:

echo'量子技能
/路径/目标/技能包
./path/to/lampda包
|问问它
使用
printf
,如下所示:

printf'quantum skill\n./path/to/skill package\n./path/to/lambda package\n'|询问初始化
后者都不起作用。因此,我建议改用
expect

我猜您需要类似
expect
(一种构建在TCL之上的脚本语言,专门用于自动化其他程序,读取其输出并写入其输入)——尽管这与您的标题要求完全相反。虽然您可能想要一个heredoc,但为了能够将文本写入
ask
的标准输入?不清楚您真正想要的是什么,因此不清楚如何回答……当您说“通过bash命令传递文本”——具体来说,哪些文本应该通过哪个bash命令传递?备份:当您说“传递问题”时,您希望您的问题写入
ask
命令吗?(如果是这样的话,你想要的可能是一个heredoc:
问得很好——听起来像是一个heredoc真的是你想要的,那么;我们确实有几个问答条目描述了如何做到这一点。请参见f/e的答案——注意,虽然这个问题涉及到很多特定于C的细节,但答案相当一般。我猜你想要的是
expect
(一种构建在TCL之上的脚本语言,专门用于自动化其他程序,读取其输出并写入其输入)--虽然这与你的标题要求的正好相反。虽然你可能想要一个heredoc,但为了能够将文本写入
ask
的stdin?你实际上想要什么并不清楚,所以不清楚如何回答……当你说“通过bash命令传递文本”时--具体来说,哪个文本应该通过哪个bash命令传递?备份:当您说“传递问题”时,是否希望将问题写入
ask
命令?(如果是这样,你想要的可能是一个heredoc:
ask Great——听起来heredoc才是你想要的,那么;我们确实有几个问答条目描述了如何做到这一点。请参见f/e的答案——注意,虽然这个问题涉及到很多C语言的具体细节,但答案相当笼统。