Ví dụ tôi có một bài app
thi thực thi
#!/bin/bash
case $1 in
(foo)
echo "selected foo"
;;
(bar)
echo "selected bar"
;;
esac
Và một sự hoàn thành đơn giản cho nó bao gồm trong fpath
#compdef app
local -a subcmds
subcmds=('foo:show foo' 'bar:show bar')
_describe 'app' subcmds
Nó hoạt động tốt. Bây giờ tôi muốn tạo một trình bao bọc thêm một tiểu ban cho ứng dụng
__app_wrapper () {
if [[ "$1" == baz ]]; then
echo "selected baz"
else
command app "$@"
fi
}
alias app=__app_wrapper
Khi tôi làm source
điều đó, tiểu ban hoạt động tốt, nhưng tự động hoàn thành chuyển sang hoàn thành với các tệp trong thư mục hiện tại thay vì những gì tập lệnh hoàn thành của tôi cung cấp. Tại sao lại như vậy và làm thế nào để khắc phục nó? Có phải vì ứng dụng hiện đang hoạt động thay vì thực thi?
Tôi thực sự đang cố gắng sử dụng một kịch bản hoàn thành phức tạp hơn cho docker-machine
nhưng tôi đã có thể giảm vấn đề của mình xuống ví dụ này.
docker
). Bạn đã tìm ra cách nào để khắc phục điều này chưa?