Shell规则

可以说,在处理引号的时候最复杂的组件是 shell。不过,每一个规则都很简单:

  • shell 的命令由 keys (--something) 和相应的值组成。不过,也有一种特殊的 key 无需映射,稍后将对此进行描述。

  • 值一般不能包含空格,因为空格是命令的默认分隔符。

  • 不过,可以通过在值的周围加上引号(单引号(')或双引号(")来添加空格。

  • 在部署属性内部传递的值(例如 deployment --properties " …​")不应该再次引用。

  • 如果用引号括起来,值可以通过使用反斜杠(\)作为前缀嵌入相同类型的引号。

  • 其他转义也是可用的,比如\t、\n、\r、\f和\uxxxx格式的unicode转义。

  • 无 keys 映射以一种特殊的方式处理,这样就不需要引用来包含空格。

例如,shell支持!来执行本机的shell命令。!接受一个无keys映射的参数。这就是下面命令为什么能工作的原因:

dataflow:>! rm something

这里的参数是整个rm something字符串,它按原样传递给底层shell。

另一个示例,以下命令具有相同的效果,参数值为something(不带引号):

dataflow:>stream destroy something
dataflow:>stream destroy --name something
dataflow:>stream destroy "something"
dataflow:>stream destroy --name "something"

Last updated