因为在第二个例子中,(错误的)您使用的引号错误。引号被用来指定什么东西出来的变量必须被视为一个字符串,并且你在其中添加了两个变量。每个人都必须分开,因为像这样说它的一个变量,所以sed看到一个变量不是两个变量。因此,例如,让说:
v1=123
v2=456
因为你拥有了它的第二个例子,sed中会看到这一点:“123456”,尽管你希望SED看到的是两个变量,一个有123和第二一个拥有456.这就是为什么你应该让他们分开的引号! 我希望我解释它足够好让你理解!
PS
你实际上是在第二个例子中所做的,你可以在某些时候,如果你想concutenate两个变量使用它,而在另一个添加它们作为字符串:)
UPDATE
所以让我们这里有一个例子.....
v1=123
v2=456
CASE1="$v1" "$v2"
CASE2="$v1 $v2"
echo CASE1
echo CASE2
对于CASE1,输出将是123456,对于CASE2,输出将是123 456 .....现在你有什么区别了吗? 只有这样,才能做到这一点的两种方式,并打印出同样的事情会是这样.....
v1=123
v2=456
CASE1="$v1" "$v2"
CASE2="$v1$v2"
具有情形2没有变量之间的空间......
你应该像这个'sed'引用正则表达式$ v1'$ v2'“<<<”abc“ – taras
我试过了,它给出了同样的错误信息。 – scolfax
@scolfax您应该了解wordsplitting:http://mywiki.wooledge.org/WordSplitting – andlrc