3

有一种方法可以像这样在 bash 中运行命令:

echo ls | bash

我需要对 bash 完成进行单元测试,如果有办法以这种方式将按下传递给 Tab 以完成命令,我很好奇,如下所示:

# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash

那可能吗?或者,也许您可​​以建议另一种对 bash 完成进行单元测试的方法?

4

2 回答 2

5

看一下compgen,一个内置命令,它可以让您生成完成匹配,就像 bash 一样。

$ compgen -c unam
uname

或者,在交互模式下运行 bash 与-i. 然后它将执行Tab-completion。

$ bash -i <<< $'unam\t'
$ bash -i <<< $'unam\t'
$ uname 
Darwin
$ exit
于 2013-05-25T17:09:00.220 回答
3
$ printf 'makeinf\t' | bash --norc -i
[user@host ~]$ makeinfo
[user@host ~]$ exit

在这里工作。PS1如果您不需要提示,也请设置:

$ printf 'makeinf\t' | PS1='' bash --norc -i
makeinfo
exit
于 2013-05-25T17:23:54.183 回答