如何在bash脚本中获取$ PATH的制表符完成作为参数?

问题描述

我有一个非常简单的脚本,可以使用Vulkan API对应用程序进行基准测试。它需要(A + !C + !D)*(!B + !C + D)*(A + !B + !C) | | V (A*!B + A*!C + A*D + !B*!C + !C + !C*D + !B*!D + !C*!D)*(A + !B + !C) | | Absorption Law applied to '!C' V (A*!B + A*D + !C + !B*!D)*(A + !B + !C) | | V A*!B + A*!B + A*!B*!C + A*D + A*!B*D + A*!C*D + A*!C + !B*!C + !C + A*!B*!D + !B*!D + !B*!C*!D | | Absorption Law applied to '!C1','A*!B',and '!B*!D' V A*!B + A*D + !C + !B*!D 一个参数:

基准应用程序:

$1

要使用它,我运行#!/usr/bin/env bash VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONfig=position=top-right $1 。它将接受参数并按预期执行,但是使用制表符补全时,它将显示benchmark-app example-game中而不是./中。

解决方法

我使用GNU的complete命令完成了制表符补全。我创建了文件/etc/bash_completion.d/benchmark-app,并添加了以下行:complete -F _command benchmark-app