有一种方法可以像这样在bash中运行命令:
echo ls | bash
我需要对bash完成进行单元测试,如果有一种方法可以通过这种方式将按键传递到Tab以完成命令,我就会很糟糕,如下所示:
# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash
这可能吗?或者你可以建议另一种单元测试bash完成的方法吗?
答案 0 :(得分:5)
查看compgen
,这是一个内置命令,可让您按照与bash相同的方式生成完成匹配。
$ compgen -c unam
uname
或者,使用-i
以交互模式运行bash。然后它将执行 Tab - 完成。
$ bash -i <<< $'unam\t'
$ bash -i <<< $'unam\t'
$ uname
Darwin
$ exit
答案 1 :(得分:3)
$ printf 'makeinf\t' | bash --norc -i
[user@host ~]$ makeinfo
[user@host ~]$ exit
在这里工作。如果您不需要提示,请设置PS1
:
$ printf 'makeinf\t' | PS1='' bash --norc -i
makeinfo
exit