cat
是否可以使用to _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
.test_tasks~
1test[1 测试测试] 2test
[2 测试测试]
似乎是空格的问题。如果我删除空格:
1test[1testtest] 2test
[2testtest]
有用。
有任何想法吗?
解决方案:
OLD_IFS=$IFS
IFS=$'\n'
_values $(< .cap_tasks~)
IFS=$OLD_IFS