我正在使用 HP 的 QuickTest Professional 和 Linux 执行一些交互式测试。我通过 SSH 连接并将 BASH 脚本行直接输入命令行。
我遇到的问题是脚本在输入时执行。我试图找到一种方法可以将脚本提供给命令行,但在整个脚本完成之前保存执行。
有人有这方面的经验吗?我承认,这不是执行此操作的理想方式,但这是我目前面临的问题。欢迎任何其他建议。
谢谢!
我正在使用 HP 的 QuickTest Professional 和 Linux 执行一些交互式测试。我通过 SSH 连接并将 BASH 脚本行直接输入命令行。
我遇到的问题是脚本在输入时执行。我试图找到一种方法可以将脚本提供给命令行,但在整个脚本完成之前保存执行。
有人有这方面的经验吗?我承认,这不是执行此操作的理想方式,但这是我目前面临的问题。欢迎任何其他建议。
谢谢!
如果您确实无法将脚本文件写入系统,则可以将命令括在括号中:
相同的交易,多行:
如果您不希望脚本在子 shell 中执行,也可以将脚本用大括号括起来:
另一种方法是将回声通过管道传输到
sh
orbash
:或使用
eval
:编辑:
这也有效:
cat test.sh | ssh [email protected] '/bin/bash -'
但是,如果你可以 ssh,你可以直接 SCP 完成的脚本吗?编辑,如果你不能 SCP,你可以:
cat test.sh | ssh [email protected] 'cat > test.sh'
不熟悉“HP 的 QuickTest Professional”,但是是什么阻止您将其写入文件并执行它?
我会看看
batch
- 它几乎完全符合您的要求。这实际上取决于您所说的“在您给出所有行之前不执行”的意思。Bash 是一种解释性语言(未编译),因此无论您以何种方式对其进行切片,shell 都会一次读取并执行一行,每个命令将独立生成自己的返回码,无论您是否将这些命令放在子 shell 中或其他事情。
所以我怀疑你真正要问的是:
(a) 有没有办法让您在一个屏幕区域中不间断地收集所有输出
(b) 有没有办法让您只需要按一次“Enter”键就可以让所有命令按顺序运行
如果您加入以分号分隔的每个命令行 ';' 那么这与在不同的行上运行它们具有相同的效果。因此,将它们全部串在一行上,最后按一次“Enter”。您可以通过键入手动执行此操作,或者您可以通过工具(如 sed 或 tr)处理您的 shell 脚本,以用分号替换行尾字符,然后将结果输入 ssh。在本地主机上,运行以下命令:
猫脚本.sh | tr "\n" ';' | ssh [远程主机]
请注意,这不会在远程主机上创建交互式 shell,它只会运行脚本中的命令,然后将控制权返回给本地主机。