我正在使用惠普的QuickTest Professional和Linux进行一些交互式testing。 我通过SSH连接并将BASH脚本行直接送入命令行。
我遇到的问题是脚本执行,因为它是input。 我试图find一种方法,我可以将脚本提供给命令行,但保存执行,直到整个脚本完成。
任何人有任何经验做这个? 我承认,这不是完成这个任务的理想方式,但这是我目前所面临的。 欢迎任何其他build议。
谢谢!
如果你真的不能写一个脚本文件到系统中,你可以用括号来包装你的命令:
( ls; echo this; echo that; )
同样的交易,多线:
( ls echo this echo that )
如果您不想在子shell中执行脚本,也可以将脚本封装在花括号中:
{ echo one echo two }
另一种方法是将回声inputsh或bash :
echo ' echo one echo two ' | bash
或使用eval :
eval ' echo one echo two '
编辑:
这也适用:
bash <<EOF echo one echo two EOF
cat test.sh | ssh [email protected] '/bin/bash -'
但是,如果你能ssh,你可以SCP完成的脚本吗? 编辑,如果你不能SCP,你可以:
cat test.sh | ssh [email protected] 'cat > test.sh'
不熟悉“惠普QuickTest专业版”,但什么阻止你写入文件并执行它?
我会看看batch – 它几乎完全是你想要的。
这真的取决于你的意思,“不要执行,直到你把所有的行”。 Bash是一种解释型语言(不编译),所以不pipe你用哪种方式进行分片,shell都会一次读取和执行一行,每个命令都会独立地生成自己的返回码,而不pipe你是把这些命令放在子壳中还是其他事情。
所以我怀疑你真正要问的是:
(a)有没有办法让你在一个屏幕区域内收集所有的输出而不中断
(b)是否有办法只需按一下“Enter”键即可让所有命令按顺序运行
如果join以分号“;”分隔的每个命令行, 那么这与在不同的行上运行它们具有相同的效果。 所以把它们串在一起,最后按“Enter”一次。 你可以通过input来手工完成,或者你可以通过一个工具(如sed或者tr)来处理你的shell脚本,用分号replace行尾字符,然后把结果input到ssh中。 在本地主机上,运行以下命令:
cat script.sh | tr“\ n”';' | ssh [远程主机]
请注意,这不会在远程主机上创build交互式shell,只会运行脚本中的命令,然后将控制权返回给本地主机。