ZSH 函数无法正常工作,出现“字符串结尾缺失”错误

Pru*_*goe 3 error-handling zsh

我正在自学编写 zsh 函数,但我立即被一个我不理解的字符串错误所困扰。我有这个功能:

function copyToDrafts() {
  print($1)
}
Run Code Online (Sandbox Code Playgroud)

在我的命令行编辑器(终端)中输入:

copyToDrafts "test"
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

copyToDrafts:1: missing end of string
Run Code Online (Sandbox Code Playgroud)

我找不到有关错误消息的任何解释,也看不出我传递的内容有任何问题,尽管显然有些问题。任何帮助,将不胜感激。

che*_*ner 5

括号不是语法的一部分;它们被解释为在模式上引入全局限定符print。参数扩展后,待评估的模式为

print(test)
Run Code Online (Sandbox Code Playgroud)

具有以下全局限定符:

  1. t- 匹配print已设置粘性位的指定文件
  2. e执行外壳命令。s充当分隔符,但没有“结束” s,这会产生观察到的错误。

您只需删除括号即可。

copyToDrafts () {
  print $1
}
Run Code Online (Sandbox Code Playgroud)