外壳脚本:
#!/bin/sh
a="foo bar"
case $a in
"foo bar")
echo case 1
;;
esac
case foo bar in
"foo bar")
echo case 2
;;
esac
执行此bash
操作会导致以下输出和错误。
case 1
foo: line 10: syntax error near unexpected token `bar'
foo: line 10: `case foo bar in'
执行此操作dash
:
case 1
foo: 10: foo: Syntax error: word unexpected (expecting "in")` leads to the following output and error.
我不明白为什么第一个case
语句成功但第二个语句没有。
根据http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_05上的 POSIX 文档,在任何一种情况下都会发生字段拆分,因此 after在第一个语句$a
中扩展为,它应该是等效的到第二个。foo bar
case
所以两者都应该失败。为什么第一个case
语句成功?