Перенаправление ввода (как вcat < file
)означает, что оболочка открывает входной файл и записывает его содержимое в стандартный ввод другого процесса. Невозможно просто поставить команду после <
.
Но вы можете использовать Подстановку процесса для создания дескриптора файла из вывода команды, используя следующий синтаксис:
<(some_command)
Это похоже на использование вывода команды как переменной с использованием $(some_command)
.
Попробуйте это:
readarray -t FileArray < <(tac "$PWD$DEBUG_DIR$DEBUG_MENU")
Если предположить, что все упомянутые вами варианты взаимоисключающие друг друга, то решение выглядит следующим образом:
#compdef pass
_pass() {
local -a args=(
# (-) makes the option mutually exclusive with all other options.
'(-)--insert[Create a new password entry]'
'(-)--edit[Edit a password entry]'
'(-)--rm[Delete a password entry]'
'(-)-P:string:'
'1:password entry:->directory'
)
_arguments $args
case $state in
directory)
_path_files -W $HOME/passwords -g '*(/)' -S /
_path_files -W $HOME/passwords -g '*.gpg(:r)' -S ' '
;;
esac
}
Документация здесь:http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-_005farguments