Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个字符串
$ str="abc 'e f g' hij"
我希望得到e f g它的全部。换句话说,我希望根据 shell 参数规则对字符串进行标记。
e f g
目前,我正在这样做
$ str="abc 'e f g' hij"; (eval "set -- $str"; echo $2)
但是如果一个*人超出'-ticks,这是完全不安全的。
*
'
有更好的解决方案吗?
您可以使用set -f完全禁用文件名扩展。
set -f
$ str="* 'e f g' hij" $ ( set -f; eval "set -- $str"; echo $2 ) e f g
这仅解决了您可能预期的一个问题,但您可能还可以探索eval其他选项。set
eval
set