Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

sh 与 zsh 的变量传入差异

  在写一些命令行工具时经常需要从命令行传入参数。有时候一些复杂的参数希望通过 shell 变量直接给程序传入数据,这在 zsh 中直接将变量作为参数传给程序即可。可是在 sh 中,变量会被直接展开,这导致我们很难将带有特殊字符的变量作为单一参数传给程序。
  从命令行传入参数时,如果需要将带有特殊字符的参数作为单一参数传给程序可以给参数外加一层引号,这是 sh 和 zsh 都支持的。

  但如果将参数先放入一个变量中,再传变量进去呢?

  于是结果就不同了。zsh 将变量视为一个单独的参数;sh 则将变量展开,由于变量 bc 中带有空格,所以被视为两个参数。
  之所以写这篇是因为我被这个问题坑了好久。在 zsh 中我们甚至可以将文件读入一个变量,然后作为参数传给程序,但是 sh 中这么干就会呵呵。所以在开发命令行工具时还是应该老老实实地用 stdin 传入数据流,或者通过参数指定文件路径让程序主动去读文件。
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^