2

我有一个字符串

$ str="abc 'e f g' hij"

我希望得到e f g它的全部。换句话说,我希望根据 shell 参数规则对字符串进行标记。

目前,我正在这样做

$ str="abc 'e f g' hij"; (eval "set -- $str"; echo $2)

但是如果一个*人超出'-ticks,这是完全不安全的。

有更好的解决方案吗?

4

1 回答 1

2

您可以使用set -f完全禁用文件名扩展。

$ str="* 'e f g' hij"
$ ( set -f; eval "set -- $str"; echo $2 )
e f g

这仅解决了您可能预期的一个问题,但您可能还可以探索eval其他选项。set

于 2013-02-16T19:20:26.657 回答