4

我在 ZSH 中有这个测试变量:

test_str='echo "a \" b c"'

我想把它解析成两个字符串的数组("echo" "a \" b c")

test_str按照外壳本身的方式阅读,并返回一组参数。

请注意,我不希望分割空白或类似的东西。这实际上是关于将任意复杂的字符串解析为 shell 参数。

4

2 回答 2

8
于 2012-12-31T09:13:58.773 回答
5

问题的措辞暗示了一个更简单的(?)答案。要设置 shell 参数,请使用set

#!/bin/sh

test_str='echo "a \" b"'
eval set $test_str
for i; do echo $i; done

这设置 $1echo$2。当然有风险,但这是便携的。当然,它不会分配给数组,但您可以按正常方式使用。a " bevalsh$@

于 2013-01-01T13:39:28.817 回答