如何在.zsh profile中编写返回cURL响应的函数及解决运行无输出问题?
问题解决步骤
你的函数写法和调用方式存在几个关键问题,逐个修正即可:
1. 命令赋值错误
在zsh中,要把命令的执行结果赋值给变量,必须用$()包裹命令,否则只会把命令文本本身当作字符串存进变量。你原来的response=curl ...没有包裹,导致response变量存的是"curl"这个字符串,而非curl请求的返回结果。
2. 变量引用错误
最后一行echo "$(response)"是错的:引用变量要加$符号,应该写成$response;而$(response)会尝试执行名为response的命令,这显然不存在,所以根本输出不了正确内容。
3. 函数调用方式错误
执行zsh函数不需要用eval ${generateToken},直接输入函数名generateToken就行——你原来的写法会把函数名当作变量展开,而函数本身不是变量,所以没反应。
修正后的完整函数代码:
generateToken() { response=$(curl -H "Content-Type: application/json" -H "service-token: xxxx" -X POST -d '{"user": "me.myself@xxxxxxx.com"}' <the-url.com>) echo "$response" }
正确操作流程
- 将修正后的函数写入你的
.zshrc(或你使用的zsh配置文件) - 执行
source ~/.zshrc让配置生效(或者直接重启终端) - 在命令行直接输入
generateToken就能运行函数,获取令牌
内容的提问来源于stack exchange,提问作者J. Jackson
相关产品推荐
相关产品推荐

