是否可以使用cat
将文件内容传递给_values
(zsh完成)?
如果我取消注释下面的行_values cat .test_tasks~
并在下面评论_values
,那么它就无效了,我得到:_values:compvalues:10: invalid value definition: 1test[1
。
#compdef test
#autoload
local curcontext="$curcontext" state line ret=1
local -a _configs
_arguments -C \
'1: :->cmds' \
'2:: :->args' && ret=0
_test_tasks() {
# _values "test" $(cat .test_tasks~)
_values "test" \
"1test[1 test test]" \
"2test[2 test test]"
}
case $state in
cmds)
_test_tasks
ret=0
;;
args)
_test_tasks
ret=0
;;
esac
return ret
1test [1 test test]
2测试[2测试]
这似乎是空白的问题。如果我删除空格:
1test [1testtest]
2检验[2testtest]
它有效。
有什么想法吗?
OLD_IFS=$IFS
IFS=$'\n'
_values $(< .cap_tasks~)
IFS=$OLD_IFS
答案 0 :(得分:1)
您可以使用mapfile
模块:
zmodload zsh/mapfile
_values ${(f)mapfile[.test_tasks~]}
mapfile
关联数组提供对外部文件内容的访问。参数扩展标志(f)
在新行上拆分生成的扩展,以便文件的每一行都形成_values
的单独参数。