我想在zsh
别名中使用heredoc ,例如:
alias runthing="cd ~; date << HERE
date
HERE"
但是,每次我运行此别名时,shell都会像未终止heredoc一样运行,并显示以下内容:
➜ ~ runthing
heredoc>
在此heredoc>
行输入命令即可完成命令,尽管我不想这样做,因此也不想使用别名。我正在使用oh-my-zsh,如果有什么不同。
如何在zsh别名中正确使用heredoc?
这里的文档定界符必须是别名中的定界行zsh
(当您按回车键时确实添加了该定界符,它看起来确实像个错误),因此:
alias runthing='cd; date << HERE
date
HERE
'
在这里,使用别名是错误的。例如考虑:
echo foo || runthing
因为alias
这只是代码文本替换的一种形式(别名在所有csh功能之前,但csh没有功能),所以变为
echo foo || cd; date...
date
即使echo
成功,这也将继续运行。
您最好在这里使用一个函数:
runthing() {
cd && date << EOF
date
EOF
}
(当然,给date
定一个Heredoc来date
读没有它的stdin ,这是没有意义的,我只是假设,这只是为了示例)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句