【发布时间】:2013-02-16 18:32:26
【问题描述】:
我有一个类似的字符串
$ str="abc 'e f g' hij"
我希望得到整个e f g 的一部分。换句话说,我希望根据 shell 参数规则对字符串进行标记。
目前,我正在这样做
$ str="abc 'e f g' hij"; (eval "set -- $str"; echo $2)
但是如果单个* 超出'-ticks,这是完全不安全的。
有更好的解决方案吗?
【问题讨论】:
我有一个类似的字符串
$ str="abc 'e f g' hij"
我希望得到整个e f g 的一部分。换句话说,我希望根据 shell 参数规则对字符串进行标记。
目前,我正在这样做
$ str="abc 'e f g' hij"; (eval "set -- $str"; echo $2)
但是如果单个* 超出'-ticks,这是完全不安全的。
有更好的解决方案吗?
【问题讨论】:
您可以使用set -f 完全禁用文件名扩展。
$ str="* 'e f g' hij"
$ ( set -f; eval "set -- $str"; echo $2 )
e f g
这仅解决了 eval 可能会出现的一个问题,但您可以探索 set 的其他选项。
【讨论】: